Маршруты CakePHP: изоляция переданных параметров в строках - PullRequest
0 голосов
/ 05 сентября 2011

Я пытаюсь настроить маршрутизацию для моего приложения CakePHP.

Один из примеров URL, который мне нужен, - /:slug-c-:id/. (EG example.com/foo-c-1/)

Предполагается, что этот URL имеет два переданных параметра: :slug и :id.
Однако CakePHP видит эти два параметра как :slug-c и :id.

Я попытался разделить маршрут следующим образом :slug\-c-:id, но затем, когда я использую помощник HTML для создания URL, он включает \ в строку, которую он строит. (EG example.com/foo\-c-1/

Есть ли другой способ отделить передаваемые параметры от других строк? Что-то вроде PHP This is a string with a {$var}adjacent to letters

Ответы [ 2 ]

0 голосов
/ 06 сентября 2011

сделайте это /:slug-:id/ и задайте регулярное выражение для слага, чтобы включить этот '-c'.

Я не совсем уверен, что вы можете установить жадное регулярное выражение для пули с идентификатором в конце. Кроме того, если вы используете Inflector для создания слагов (что является рекомендуемым способом), он будет создавать слаг с подчеркиванием. Поэтому я думаю, что лучше вместо этого использовать «_c». Регулярное выражение должно быть чем-то вроде [A-Za-z0-9_]+_c

Подробнее здесь: http://book.cakephp.org/view/945/Routes-Configuration

0 голосов
/ 05 сентября 2011

Я нашел несколько хакерское решение, которое я бы предпочел не использовать, но в основном я настроил свой маршрут как:

/:slug-:cslug-:id/* и установите регулярное выражение :cslug в c

Проблема в том, что каждый раз, когда я настраиваю URL с помощью HTML-помощника, я должен сделать

array(
   'controller' => 'products'
   'action' => 'index'
   'slug' => 'Foo'
   'cslug' => 'c'
   'id' => 1
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...