CakePHP: Как получить идентификатор для строки, которая соответствует слаг? - PullRequest
2 голосов
/ 14 марта 2011

У меня есть модель, которая называется Posts с полем, называемым slug. Я хочу создать функцию маршрутизации для этого: www.mysite.com/slug. Итак, я создал класс Slug, который используется в файле rout.php, который выглядит так, и он не работает так, как я хочу:

class SlugRoute extends CakeRoute {

   function match($url) 
   {
        App::import('Model', 'Post');
        $Post = new Post();
        $Post->find('first', array('conditions' => array('Post.slug' == $url)));
        $id = $Post['id'];
        return $id;
   }
}

Вот строка кода, которая у меня есть в моем файле rout.php:

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

Все, что я хочу сделать, - это выполнить поиск в моих сообщениях, чтобы сопоставить входной слаг в URL с тем, что у меня есть в моей базе данных, затем вернуть идентификатор и автоматически связать его с этим идентификатором.

Что я делаю не так? Заранее спасибо !!

Ответы [ 2 ]

0 голосов
/ 14 марта 2011

Попробуйте это

$Post = new Post();
    $data = $Post->find('first', array('conditions' => array('Post.slug' => $url)));
    $id = $data['Post']['id'];
0 голосов
/ 14 марта 2011

Я нашел этот пример, который делает то же самое, что и вы, но использует метод parse вместо match. Посмотрите: http://mark -story.com / posts / view / using-custom-route-classes-in-cakephp

...