Regex CakePHP-Router::url不';当有';路由器中有一个正则表达式匹配::connect

Regex CakePHP-Router::url不';当有';路由器中有一个正则表达式匹配::connect,regex,cakephp,Regex,Cakephp,在我的CakePHP中,我的routes.php文件如下所示: Router::connect('/premios/:category', array('controller' => 'prizes', 'action' => 'category'), array( 'category' => '\bmarcas|restaurantes|combustibles|peluqueria\b', )); 这样,每当用户输入/premios

在我的CakePHP中,我的routes.php文件如下所示:

Router::connect('/premios/:category',
    array('controller' => 'prizes', 'action' => 'category'),
    array(
        'category' => '\bmarcas|restaurantes|combustibles|peluqueria\b',
    ));
这样,每当用户输入/premios url时,下一个参数将与“category”regex匹配。这很好用

问题是,当我想为类别生成一个漂亮的url时,比如说,“peluqueria”,使用这行代码生成一个“不漂亮”的url:

Router::url(array('controller' => 'prizes', 'action' => 'category', 'peluqueria')); ?>
它不是生成一个漂亮的URL(/premios/peluqueria),而是生成一个非漂亮的URL(/prices/category/peluqueria)

我做错了什么?或者这是
路由器::url
功能的限制

一个解决方法是定义每个连接,避免使用正则表达式,但它不像当前的解决方案那样漂亮,而且当类别数开始增长时,它会变得烦人


有什么想法吗?

您必须实际命名
路由器::url
中的
类别
参数,如下所示

Router::url(array('controller' => 'prizes',
                  'action'     => 'category', 
                  'category'   => 'peluqueria'));
您可能希望将“category”参数传递给奖品中的category操作,因此您遗漏了一些内容

Router::connect(
    '/premios/:category',
    array('controller' => 'prizes', 'action' => 'category'),
    array(
        'pass' => array('category'),
        'category' => '\bmarcas|restaurantes|combustibles|peluqueria\b'
    )
);

查看更多滞留的文档:)

您在routes.php文件中有
'category'=>'\bmarcas | restaurants |可燃物| peluqueria\b'
,您正在传递
peluquerias
(复数)。就本例而言,这是打字错误还是实际问题?(如果只是一个拼写错误,请在问题中纠正)拼写错误,对不起。谢谢你的关注,我爱你。非常感谢!:)仅供参考,我没有传递这些参数,因为我在$this->request->params->pass[0]True中找到了它们,但没有
公共函数类别($category=null)
看起来更漂亮:)偏好问题。真的!再次感谢。