Php 如何设置以别名作为控制器的自定义路由

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.

我正在使用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.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数组中,变量才会被发送。感谢您快速而正确的回答。需要将这些变量添加到控制器的操作中,虽然现在很明显,但这是我缺少的一步。