Пользовательские маршруты в CakePHP: регулярные выражения, не ограничивающие совпадения - PullRequest
0 голосов
/ 23 сентября 2011

Я пытаюсь настроить свои пользовательские маршруты в CakePHP так, чтобы URL

/ objects / id / action => ObjectsController.action () с параметрами ['id'] = id

(Это так, что мне не нужно иметь такие URL, как / objects / action / id, которые логически имеют для меня меньшее значение, чем объекты / id / action).

Я все еще хочу / objects / actionдля запуска ObjectsController.action () (например, для добавления, индексации, поиска).

Моя конфигурация маршрутов выглядит следующим образом:

Router::connect('/:controller/:id',
    array('action'=>'view'),
    array(
        ':id'       =>  '^[0-9]+$'
    )
);
Router::connect('/:controller/:id/:action/*',
    array('action'=>'view'),
    array(
        ':id'       =>  '^[0-9]+$',
        ':action'   =>  '[A-Za-z0-9_\-]*'
    )
);

Это работает с (например):

  • / objects / 54
  • / objects / 54 / edit
  • / objects / add

Но не с

  • / objects / index / page: 2

Для которого он выдает ошибку, в которой мне нужно определить действие "page: 2" в ObjectsController ... Конечно, оно должно работать, потому что: id должен совпадать только с цифрами, нет?

1 Ответ

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

Попробуйте удалить ":" из второго параметра:

'id'       =>  '^[0-9]+$'

Также см. Опцию "pass".

@ см. В Google на "маршрутах cakephp":

...