Php 如何设置以别名作为控制器的自定义路由
我正在使用Cakephp 2.0开发的CMS有两个主要控制器:Php 如何设置以别名作为控制器的自定义路由,php,cakephp,url-routing,Php,Cakephp,Url Routing,我正在使用Cakephp 2.0开发的CMS有两个主要控制器: 页数 类别 我正在尝试将route.php设置为具有以下行为: 如果用户请求一个页面,则URL应类似于: http://www.something.com/pages-alias/article-name/id/whatever http://www.something.com/categories-alias/category-name/id/whatever 如果用户地址为类别,则URL应类似于: http://www.
- 页数
- 类别
http://www.something.com/pages-alias/article-name/id/whatever
http://www.something.com/categories-alias/category-name/id/whatever
如果用户地址为类别,则URL应类似于:
http://www.something.com/pages-alias/article-name/id/whatever
http://www.something.com/categories-alias/category-name/id/whatever
请注意,以下类别和页面我使用了“别名”。
举例说明,本地餐厅网站的URL为:
http://www.something.com/course/wild-boar/68/2013-07-18
其中“课程”将替换为“页面”。及
其中“菜单”将替换为“类别”
该视图不应在URL或路由规则中明确说明
这两种情况下,控制器在进行一些内部检查(具有子类别、只有一页或多页等)后会自动选择视图,以便控制器覆盖该视图
我有一些关于使用某种“别名”来构建路由规则的线索,但不幸的是,文档对如何管理对象以创建我自己的自定义路由不够清楚
那么,有人可以尝试用一些不同于CakePHP2.x文档中的示例来解释它吗
提前感谢任何能提供帮助的人。
作为参考,我将在这里粘贴我已经阅读过的链接:
- 这可能就是您想要的:
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) {}
只是想看看我是否理解正确:
:某些东西就像路由对象的变量一样工作。我所设置的,使用这个路径是:无论我分配给变量:category\u alias
,CakePhP都将使用控制器文章和视图。然后,在url中输入组合的变量。在控制器中的视图()
中,我需要一些额外的信息来创建我希望由路由系统组成的URL。这是对代码的正确解释吗?(呵呵,注释中的格式非常糟糕,对不起)是的,记住只有将变量放入pass数组中,变量才会被发送。感谢您快速而正确的回答。需要将这些变量添加到控制器的操作中,虽然现在很明显,但这是我缺少的一步。