Помощь в маршрутизации cakePHP

Здесь я пытаюсь направить страницу, не показывая ее действие в URL,

Например: URL-адрес http://localhost/brands/1/xyz

Router::connect(
    '/brands/:id/:name',
    array(
        'controller' => 'brands',
        'action' => 'index',
        'id' => '[0-9]{1,}',
        'name' => '[a-z]{1,}'
    )
);

работает нормально....

Но мне нужно сделать id а также name по желанию и попробовал это:

Router::connect(
    '/brands/:id/:name',
    array(
        'controller' => 'brands',
        'action' => 'index',
        'id' => '[0-9]{1,}',
        'name' => '[a-z]{1,}'
    )
);

http://book.cakephp.org/view/542/Defining-Routes

Но когда я пытаюсь этот URL http://localhost/brands/1 он ищет действие 1, но http://localhost/brands/1/xyz работает отлично.

Есть ли ошибка в моей конфигурации маршрутизации????

2 ответа

Решение

Если вы просто хотите иметь доступ к http://localhost/brands/1, вам нужно добавить этот маршрут:

Router::connect('/brands/:id',
   array('controller' => 'brands','action' => 'index','id' => '[0-9]{1,}')
);

(а также сохранить свой оригинальный маршрут)

Router::connect('/brands/:id/:name',
    array('controller' => 'brands','action' => 'index','id' => '[0-9]{1,}','name' => '[a-z]{1,}')
);

(и, наконец, маршрут для / брендов)

Router::connect('/brands',
    array('controller' => 'brands','action' => 'index')
);

Затем проверьте наличие в этом контроллере $this->params['id'] и $this->params['name']. При необходимости перенаправьте на правильный URL-адрес (если страница одна и та же, и вы всегда хотите иметь имя в URL-адресе, что хорошо для SEO).

Укажите второй маршрут, опуская необязательные параметры.

Другие вопросы по тегам