现在我有两张桌子。类别和网站。我有一个名为Cars(id:5)的类别和属于该类别的两个网站(bmw.com,toyota.com)。 如果我现在想要查看所有汽车的网站,我使用普通的url / categories / view / 5。但我希望有一个像/ categories / cars /这样的网址来查看同一页面。所以基本上不是动作而是我需要在类别表中使用行的名称。
你能帮助我实现这个目标吗? 谢谢 干杯答案 0 :(得分:1)
这很简单 - 只需阅读有关路由的深入文档,您就可以在几分钟内解决它:
答案 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页面,了解更多信息。