CakePHP使用slug和语言进行路由

时间:2016-02-02 09:11:17

标签: cakephp

我需要在网址中包含语言参数和slug的路由。

http://localhost/demo/eng/home

这里“eng”是语言名称,“home”是slug名称。

我在route.php中完成了以下代码

var $$ = Dom7;
$$.ajax({
    url: "http://query.yahooapis.com/v1/public/yql",
    contentType: "OPTIONS",
    crossDomain: true,
    data: {
        q: "select title,abstract,url from search.news where query=\"cat\"",
        format: "json"
    },
    success: function( response ) {
        alert( 'ok' );
        alert( response );
    }
});

同样在视野中

1 个答案:

答案 0 :(得分:1)

您的路线存在冲突。

我猜您正在尝试将以下网址数组传递给HtmlHelper::link()HtmlHelper::url()

[
    'controller' => 'homes',
    'action' => 'view',
    'language' => 'eng',
    'slug' => 'press-release',
]

但是这个数组不仅匹配/:language/:slug/*,还匹配/:language/:action/*。因为包含languageactionslug匹配*作为命名参数。 并且/:language/:action/*出现在您的routes.php中的/:language/:slug/*之前。如果定义冲突路由,则第一个定义的路由具有更高的优先级。因此,您获得了网址/eng/view/slug:press-release

总之,/:language/:action/*应该被移除,或者应该至少在/:language:/:slug/*之后定义。