CakePHP:如何获得匹配slug的行的ID?

时间:2011-03-14 07:18:07

标签: cakephp routes slug

我有一个名为Posts的模型,其中包含一个名为slug的字段。我想创建一个基本上这样做的路由功能:www.mysite.com/slug。所以,我创建了一个在routes.php文件中使用的Slug类,看起来像这样,并且它不能像我想的那样工作:

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;
   }
}

这是我在routes.php文件中的代码行:

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

我想要做的就是在我的帖子上执行搜索,将URL中的输入slug与我在数据库中的输入slug相匹配,然后返回ID并自动链接到该ID。

我做错了什么?在此先感谢!!

2 个答案:

答案 0 :(得分:0)

我发现这个示例与您正在执行的操作完全相同,但使用parse方法而不是match方法。看看:http://mark-story.com/posts/view/using-custom-route-classes-in-cakephp

答案 1 :(得分:0)

试试这个

$Post = new Post();
    $data = $Post->find('first', array('conditions' => array('Post.slug' => $url)));
    $id = $data['Post']['id'];