Помощь в маршрутизации 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).