CakePHP:我怎样才能选择一个类别的所有元素" nice"网址是什么? (/类别/ NAME_OF_CATEGORY)

时间:2013-08-20 06:09:07

标签: php cakephp controller

现在我有两张桌子。类别和网站。我有一个名为Cars(id:5)的类别和属于该类别的两个网站(bmw.com,toyota.com)。 如果我现在想要查看所有汽车的网站,我使用普通的url / categories / view / 5。但我希望有一个像/ categories / cars /这样的网址来查看同一页面。所以基本上不是动作而是我需要在类别表中使用行的名称。

你能帮助我实现这个目标吗? 谢谢 干杯

2 个答案:

答案 0 :(得分:1)

这很简单 - 只需阅读有关路由的深入文档,您就可以在几分钟内解决它:

http://book.cakephp.org/2.0/en/development/routing.html

答案 1 :(得分:1)

为了实现您的要求,您需要对两件事做出更改:

  • app/Config/route.php文件。
  • app/Controller/CategoriesController.php文件。

app/Config/route.php

Router::connect('/categories/:name', array(
       'controller' => 'categories', 'action' => 'viewByName'
    ),
    array(
        'pass' => 'name',
        'name' => '[a-zA-Z0-9]+'
    )
);

app/Controller/CategoriesController.php

public function viewByName($name = null) {
    $option = array(
        'conditions' => array('Category.name'=>$name)
    );
    $category = $this->Category->find('first', $options);
    $this->set('category', $category);
}

然后,您可以将app/View/Categories/view.ctp的内容复制到viewByName.ctp并稍微润色一下。

我给你最低限度,所以请出于安全原因添加检查变量内容等等。

您还可以查看Routing上的Cake Documentation页面,了解更多信息。