Обратный URL-адрес на основе слагов в CakePHP - PullRequest
1 голос
/ 26 марта 2011

(я знаю, что на этом сайте есть пара других вопросов о обратных маршрутизации, но мне не очень повезло с ответами на мою конкретную проблему, поэтому я задам свой более конкретный вопрос ...)

Я создаю сайт, URL-адреса которого теперь должны быть основаны на слаге, то есть то, что первоначально было news / item / 1, теперь должно иметь URL-адрес news / firstnewsitem. И так далее для ряда других контроллеров. Я могу легко заставить эти адреса работать, и, возможно, даже не помешать моим существующим служебным действиям, с чем-то вроде:

Router::connect('/:controller/:slug',
    array('action'=>'item'),
    array('pass'=>array('slug'), 'slug'=>'[^(index|add|edit|view|delete)]')
);

Однако обратная маршрутизация этих новых ссылок, кажется, не является началом: Cake все еще генерирует такие ссылки, как news / item / 3. Кажется оптимистичным надеяться, что URL-адрес на основе слагов будет происходить автоматически, но есть ли какой-нибудь массив, который я могу передать в моих параметрах Html-> link, который создаст нужный мне формат: controller /: slug? Или я должен сократить свои потери и отойти от обратного маршрутизации на этом этапе?

1 Ответ

1 голос
/ 28 марта 2011

Здесь есть довольно приличный плагин для обработки маршрутизации на основе слагов: https://github.com/jeremyharris/slugger

Если вы воспользуетесь этим, вы сможете создавать ссылки примерно так

$html->link("some item", array(
    'controller'=>'items',
    'action'=>'view',
    'Item'=>$item['id']
));

и будет выведена ссылка на / items / view / slug-for-your-item

...