Конечно. Единственным требованием для этого является то, что в URL достаточно уникальной информации, чтобы определить нужную статью. Если /article-name
уникален в вашей базе данных, вы можете использовать его для поиска нужной записи.
В config / rout.php:
// ... configure all normal routes first ...
Router::connect('/*', array('controller' => 'articles', 'action' => 'view'));
В контроллерах / article_controller.php:
function view ($article_name) {
$article = $this->Article->find('first', array(
'conditions' => array('Article.name' => $article_name)
));
...
}
Будьте осторожны, чтобы ваши продукты не назывались так, как они могли бы законно появиться в URL, чтобы не столкнуться с конфликтами. URL http://example.com/pages
указывает на «страницы» продукта или на array('controller' => 'pages', 'action' => 'index')
? Для этого вам также необходимо определить ваши маршруты в routes.php
таким образом, чтобы сначала были доступны все ваши контроллеры, и только неопределенный остаток будет передан в ваш ArticlesController
. Посмотрите на третий параметр Routes::connect
, который позволяет вам указать фильтр RegEx, который вы можете использовать для этой цели.