CakePHP маршрутизация: отображать конкретные результаты поиска - PullRequest
0 голосов
/ 27 июня 2011

Я взял проект у другого разработчика и довольно новичок в cakephp. Надеюсь, я формулирую свой вопрос и подход соответствующим образом.

У меня есть страница, на которой я хочу отображать конкретные результаты поиска, и я хочу назвать ее с определенным URL. Этот URL возвращает правильные результаты:

http://www.advancelegaljobs.com/jobs/search/radius:Massachusetts-Boston

Это URL, который я хочу использовать:

http://www.advancelegaljobs.com/boston-legal-jobs

Я пробовал множество вариаций в rout.php, но, похоже, ни одна из них не работает. Например:

Router::connect('/boston-legal-jobs', array('controller' => 'jobs', 'action' => 'search', 'radius:Massachusetts-Boston'));

или

Router::connect('/boston-legal-jobs', array('controller' => 'jobs', 'action' => 'search'), array('passedArgs'=>array('radius','Massachusetts-Boston')));

Буду признателен за любую помощь.

ОБНОВЛЕНИЕ:

Мне кажется, я уже близко к этому. Изменение маршрута на:

Router::connect('/boston-legal-jobs', array('controller' => 'jobs', 'action' => 'search', array('radius' => 'Massachusetts-Boston')));

выдает это, когда я вхожу в PassArgs:

( [0] => Массив ( [radius] => Массачусетс-Бостон )

)

Когда я использую URL, который дает правильные результаты, это то, что регистрируется:

( [radius] => Массачусетс-Бостон )

Итак, я предполагаю, что мой код вложил мой массив в безымянный массив? Есть мысли по поводу исправления этого?

Спасибо

Ответы [ 2 ]

1 голос
/ 27 июня 2011

Возможно, попробуйте добавить это:

Router::connectNamed(array('radius'));

При создании пользовательских маршрутов распространенной ошибкой является то, что использование именованных параметров нарушит ваши пользовательские маршруты.Для решения этой проблемы вы должны сообщить маршрутизатору, какие параметры должны быть названы параметрами.

См. Именованные параметры .

0 голосов
/ 29 июня 2011

Я не уверен, что это лучший или правильный способ решить эту проблему, но вот что сработало, после многих проб и ошибок.Маршрут:

Router::connect('/boston-legal-jobs', array('controller' => 'jobs', 'action' => 'search', array('radius' => 'Massachusetts-Boston')));

Мое действие ожидало $ this-> passArgs ['radius'] , но в этой маршрутизации 'radius' является первым ключом в массиве.

Просто добавив еще одно условие для $ this-> passArgs [0] ['radius'] добилось цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...