Маршрутизатор CakePHP указывает на то же действие

0

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

example.com/posts/show/show-by-day
example.com/posts/view/slug-post

Я хочу, чтобы они были такими:

example.com/article/show-by-day.html
example.com/article/slug-post.html

Поэтому я маршрутизирую файл под конфигурационным файлом, который я написал как:

Router::connect('/article/:show_by_day', array('controller' => 'posts', 'action' => 'show'), array('pass' => array('show_by_day'))); 

Router::connect('/article/:slug', array('controller' => 'posts', 'action' => 'view'), array('pass' => array('slug'))); 

его работая отлично когда я ударяю url example.com/article/show-by-day.html

но когда я ударил url example.com/article/slug-post.html, он снова указывает на показ действий.

Так как я могу это решить? Большое спасибо!

Теги:
cakephp

1 ответ

0
Лучший ответ

попробуй это

Router::connect( '/article/show-by-day.html', 
    array(
        'controller' => 'posts',
        'action' => 'show'
    ),
    array(
        'pass' => array('show_by_day')
    )
);

Router::connect( '/article/slug-post.html', 
    array(
        'controller' => 'posts',
        'action' => 'view'
    ),
    array(
        'pass' => array('slug')
    )
);

Объяснение: Первый параметр Router::connect - это точный URL-адрес, который вы хотите сопоставить, - в исходном коде включен : - который параметризовал URL-адрес вместо того, чтобы использовать точное совпадение. Второй и третий параметры в Router::connect - это фактический контроллер/действие, которое необходимо вызвать вместе с требуемыми параметрами.

  • 0
    Вы можете немного объяснить? Я не думаю, что ваш ответ соответствует желаемой структуре URL

Ещё вопросы

Сообщество Overcoder
Наверх
Меню