1

routes.php最后添加了以下路线。

Router::connect('/:sellername/:itemtitle',
                 array('controller' => 'items', 'action' => 'view_item_detail'),
                 array(
                      'pass' => array('sellername','itemtitle'),
                      'sellername' => '[a-zA-Z0-9_-]+',
                      'itemtitle' => '[a-zA-Z0-9_-]+',
                  )
               );

因此,这与动态 url 相匹配,http://example.com/john/title-of-an-item 问题是http://example.com/members/signin即使其中有MembersController控制器和signin操作,这也与其他所有 url 匹配。我可以使用以下路线条目来修复它。

Router::connect(
                 '/members/:action',
                 array('controller' => 'members')                      
               );

但是像上面那样添加每条路线是非常乏味的。在进行匹配时,现有的匹配控制器名称是否不会被优先考虑?路线顺序有routes.php关系吗?

4

1 回答 1

3

Custom Route classes是为了帮助你

自定义路由类允许您扩展和更改单个路由解析请求和处理反向路由的方式。路由类应该扩展 CakeRoute 并实现 match() 和/或 parse() 之一或两者。parse() 用于解析请求,match() 用于处理反向路由。

您可以在使用 routeClass 选项创建路由时使用自定义路由类,并在尝试使用它之前加载包含您的路由的文件:

Router::connect(
     '/:slug',
      array('controller' => 'posts', 'action' => 'view'),
      array('routeClass' => 'SlugRoute')
);

此路由将创建一个 SlugRoute 实例并允许您实现自定义参数处理。

客户路由类让你实现任何东西

But personal opinion is to user a static and meaning full text in the url that diffrenciate it from the rest.

于 2013-06-09T14:47:24.267 回答