Как удалить имя действия из url в cakephp?

Я работаю над проектом cakephp. Я удалил index.php из URL, используя файл .htaccess, и теперь я хочу удалить имя вида из URL и добавить еще два разных параметра. Предположим, что я выбираю страну и город, тогда эти два параметра должны появиться в URL-адресе при их выборе.

Проблема, с которой я сталкиваюсь, – это то,

www.example.com/Controllername/viewname 

Но мое требование похоже на это

 www.example.com/Controllername/param1/param2 

Если я передаю этот путь, он ищет param1 как контроллер и param2 как view.

Первоначально должно быть:

 www.example.com/Controllername/ 

В вашем 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'))); 

и ваш контроллер:

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

При создании ссылок:

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

Вопросы для заказа. Измените paramX на все, что вы хотите, т.е. country и town

обратите внимание, что это не распространяется: controllername/param1 – оба должны присутствовать в этом примере.

Есть и другие способы добиться этого.

Я думаю, вы должны сначала убедиться, что модуль mod-rewrite включен. Вам не нужно было удалять index.php из url, используя .htaccess, если mod_rewrite был включен. Проверьте, как включить его в руководстве вашего веб-сервера и по умолчанию .htaccess cakephp должен иметь возможность обрабатывать остальную часть маршрутизации для вас.

После того, как вы включите переписать модуль, вы можете изменить маршруты, как указано в @Ross в предыдущем ответе в вашем 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')));