вся маршрутизация выполняется через вызов Router :: connect («что поймать», «куда отправить»);
, поэтому все может быть просто:
Router::connect('/food/tips', '/tips/index/food');
или предпочтительный метод (используя торты, встроенные в построитель URL)
Router::connect('/food/tips/*', array('controller' => 'tips', 'action' => 'index', 'food');
Первый метод принимает строковый аргумент и передает его в другую строку, которая будет URL-адресом, и затем вам придется его перехватыватьв вашем контроллере и ожидайте передаваемый параметр через URL.
Второй метод использует торты, встроенные в формирователь URL, который принимает массив с ключами контроллера и действиями (есть и другие варианты: http://api.cakephp.org/class/router#method-Routerurl)секунда предпочтительнее из-за правильного форматирования и будущей гибкости (я полагаю).
любые переданные параметры во втором методе просто передаются как неназванные элементы в массиве. именованные параметры просто передаются как ключевые элементы.если бы я хотел создать URL-адрес, подобный этому
/ posts / index / find: all / page: 2
, я бы написал URL-адрес следующим образом:
Router::connect('/url_to_catch', array('controller' => 'posts', 'action' => 'index', 'find' => 'all', 'page' => 2);
Так что простоВ завершение, я бы на самом деле передал ваш параметр с именем:
Router::connect('/happiness/tips/best_tips', array('controller' => 'tips', 'action' => 'index', 'items' => array('happiness', 'best_tips'));
, что потребовало бы функцию в вашем контроллере подсказок, которая выглядит следующим образом:
function tips(){ $this->passedArgs['items']; }