我使用Cakephp2.0开发的CMS有两个主要控制器:
- 页码
- 类别
我试图将route.php设置为具有以下行为:
如果用户请求页面,URL应该类似于:
http://www.something.com/pages-alias/article-name/id/whatever
如果用户地址为类别,则URL应该类似于:
http://www.something.com/categories-alias/category-name/id/whatever
请注意,以下类别和页面我使用了"别名"。举例说明,当地餐馆网站的URL为:
http://www.something.com/course/wild-boar/68/2013-07-18
其中"课程"将替换"页面"。和
http://www.something.com/menu/valentine-day/8/2014-01-30
其中"菜单"将取代"类别"。
视图不应在URL或路由规则中进行说明。
这两种情况都会让控制器在进行一些内部检查后自动选择视图(具有子类别、仅具有一页或多页等),从而被控制器覆盖。
我已经得到了一些关于使用某种"别名"来构建路由规则的线索,但不幸的是,文档对我来说不够清楚,无法管理对象来创建自己的自定义路由。
那么,有人能试着用一些不同于CakePhP2.x文档中的例子来解释它吗?
提前感谢任何有帮助的人。为了参考,我会把我已经读过的链接粘贴到这里:
- 路由-Cakephp 2.0文档
- 来自Frank的烘焙文章(我想这是针对v1.3的)
这可能就是您想要的:
Router::connect(
'/:category_alias/:category_name/:id/:whatever',
array('controller' => 'Article', 'action' => 'view'),
array('pass' => array('category_alias','category_name','id','whatever'),
'id' => '[0-9]+')
);
ofc你可以删除这个id的验证器。或者添加更多的验证器:)
然后您可以使用ArticleController.php
中的功能
public function view($category_alias, $category_name, $id, $whatever) {}