Маршрутизация Cakephp с дополнительными параметрами

StackOverflow https://stackoverflow.com/questions/2145224

  •  23-09-2019
  •  | 
  •  

Вопрос

У меня есть метод в моем контроллере пользователей, похожий на:

function members($type = null, $category = null) { ... }

Оба параметра являются необязательными и могут использоваться вместе или по отдельности.

Итак, следующий маршрут.

Router::connect('/members/*', array('controller' => 'users', 'action' => 'members'));

http://example.com/users/members успешно становится http://example.com/members.

К сожалению, следующее не работает

http://example.com/members/type:cat
http://example.com/members/category:dog
http://example.com/members/type:cat/category:dog

как мне настроить маршруты так, чтобы все они работали правильно?

Это было полезно?

Решение

Именованные параметры не сопоставляются с действием автоматически.Вы можете получить их, позвонив

$this->passedArgs['type'] или $this->passedArgs['category']

или используя третий параметр в Router::connect:

Router::connect(
    '/members/*',
    array('controller' => 'users', 'action' => 'members'),
    array(
        'pass' => array('type', 'category')
    )
);

http://book.cakephp.org/view/46/Routes-Configuration

Другие советы

Попробуйте с

Router::connect('/members/type\:(.*)', array('controller' => 'users', 'action' => 'members_type'));
Router::connect('/members/category\:(.*)', array('controller' => 'users', 'action' => 'members_category'));
Router::connect('/members/type\:(.*)/category:(.*)', array('controller' => 'users', 'action' => 'members_type'));

Обратите внимание: я это не проверял, но думаю, вам нужно избегать двоеточия.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top