如何使用别名设置自定义路由作为控制器

时间:2014-04-07 16:29:58

标签: php cakephp url-routing

我正在使用Cakephp 2.0开发的CMS有两个主要的控制器:

  • 分类

我正在尝试将 route.php 设置为具有以下行为:

如果用户请求页面,则网址应为:

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

“课程”将取代“页面”。和

http://www.something.com/menu/valentine-day/8/2014-01-30

“menu”将替换“category”。

不应在URL和路由规则中说明视图。

在进行一些内部检查(具有子类别,只有一页或多页,等等)后,两种情况都会由控制器自动选择视图,以便控制器覆盖这些视图。

我有一些关于使用排序“别名”来构建路由规则的线索,但不幸的是,文档对于如何管理对象以创建我自己的自定义路由不够清楚。

那么,是否有人尝试使用与CakePhP 2.x文档中提供的示例不同的示例来解释它?

提前感谢任何有帮助的人。 作为参考,我将在此处粘贴我已阅读过的链接:

1 个答案:

答案 0 :(得分:1)

这就是你想要的:

 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) {}