Я работаю над проектом 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')));