2012-12-28 27 views
6

Tôi đang làm việc trên dự án cakephp. Tôi đã xóa index.php khỏi URL bằng cách sử dụng tệp .htaccess và bây giờ tôi muốn xóa tên chế độ xem khỏi URL & thêm một số tham số khác nhau khác nhau. Giả sử tôi chọn quốc gia & thành phố thì hai tham số này sẽ xuất hiện trong URL khi chọn chúng.Làm cách nào để xóa tên hành động khỏi url trong cakephp?

Vấn đề tôi đang phải đối mặt là như CakePHP mất

www.example.com/Controllername/viewname 

Nhưng yêu cầu của tôi là như thế này

www.example.com/Controllername/param1/param2 

Nếu tôi vượt qua con đường này Nó trông cho param1 như bộ điều khiển và param2 như xem.

Ban đầu nên được như thế:

www.example.com/Controllername/ 

Trả lời

2

Trong APP/routes.php của bạn:

// www.example/com/Controllername 
Router::connect('/Controllername', 
    array('controller'=>'Controllername', 'action'=>'index')); 

// www.example.com/Controllername/param1/param2 
Router::connect('/Controllername/:param1/:param2', 
    array('controller'=>'Controllername', 'action'=>'index'), 
    array('pass' => array('param1', 'param2'))); 

và điều khiển của bạn: liên kết

// set to null/a value to prevent missing parameter errors 
public function index($param1=null, $param2=null) { 
    //echo $param1 . ' and ' . $param2; 
} 

Khi tạo:

array('controller'=>'Controllername', 'action'=>'index', 'param1'=>'foo', 'param2'=>'bar'); 

Các vấn đề đặt hàng. Thay đổi paramX thành bất kỳ điều gì bạn muốn, tức là countrytown

lưu ý điều này không bao gồm: controllername/param1 - cả hai đều phải có mặt trong ví dụ này.

Có nhiều cách khác để đạt được điều này.

+0

nhờ trả lời, cố gắng Khi tôi này đã nhận được URL http://www.example.com/app/webroot/index.php/controllername/viewname/foo/bar Nhưng tôi không muốn tên người xem trong URL –

0

Tôi nghĩ trước tiên bạn nên đảm bảo rằng mô-đun viết lại được bật. Bạn không cần phải xóa index.php khỏi url bằng cách sử dụng .htaccess nếu mod_rewrite được bật. Kiểm tra cách bật nó trong hướng dẫn sử dụng máy chủ web của bạn và mặc định .htaccess của cakephp sẽ có thể xử lý phần còn lại của định tuyến cho bạn.

Sau khi bạn đã kích hoạt tính năng mô-đun viết lại, bạn có thể sửa đổi các tuyến đường như đã chỉ ra bởi @Ross trong câu trả lời trước đó trong bạn APP/routes.php:

// www.example/com/Controllername 
Router::connect('/Controllername', 
array('controller'=>'Controllername', 'action'=>'index')); 

// www.example.com/Controllername/param1/param2 
Router::connect('/Controllername/:param1/:param2', 
array('controller'=>'Controllername', 'action'=>'index'), 
array('pass' => array('param1', 'param2'))); 
Các vấn đề liên quan