CakePHP反向路由:Html链接没有显示正确的链接



首先,我知道有很多问题和解决方案,但我没有找到解决我的问题。

总之,Html帮助器没有正确地反向路由,而是像这样的url:
http://website.com/user_of_website/slug_name

我得到这样的url:

http://website.com/things/view/username:user_of_website/slug:a_thing

这是我的路由器设置:

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
/**
* ...and connect the rest of 'Pages' controller's urls.
*/
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
//User routes
Router::connect('/login', array('controller' => 'users', 'action' => 'login'));
Router::connect('/logout', array('controller' => 'users', 'action' => 'logout'));
Router::connect('/register', array('controller' => 'users', 'action' => 'add'));
Router::connect('/users/:action/*', array('controller' => 'users')); 
Router::connect('/things/:action/*', array('controller' => 'things')); 
Router::connect(
    '/:username/:slug',
    array(
        'controller' => 'things',
        'action' => 'view'
    ),array(
        'username' => '[a-zA-Z0-9_]+',
        'slug' => '[a-zA-Z0-9_]+',
        'pass'=>array(
            'username',
            'slug'
        )
    )
);
Router::connect('/:userName', array('controller' => 'things', 'action' => 'user'),array('pass'=>array('userName'))); 

和我的Html帮助器:

echo $this->Html->link('View', array(
    'controller' => 'things',
    'action' => 'view',
    'username' => 'user_of_website',
    'slug' => 'a_thing'
),array(
    'class' => 'text-warning'
));
我真的不知道我做错了什么。如有任何帮助,不胜感激。 注意,我使用的是CakePHP 2.3

如果您禁用things的"常规"路由,您是否尝试过它是否有效?例:/things/:action/*

我的猜测是,因为通配符的关系,这个路由也会匹配URL,而且,因为它是在之前定义的你的自定义路由,将被匹配。

如果问题解决了,你可以试着把这个路由移到你的自定义路由

下面

最新更新