CakePHP路由器与slug和语言


CakePHP Router with slug and language

我在CakePHP中尝试管理路由时有点走投无路。我几乎阅读了www上的每一篇文章,其中一些文章接近我的需求,但与其他文章结合使用并没有达到预期效果。也尝试了一些路由器lib-s,但相同的

这是我需要的:

url中的语言参数和一段页面。因此:

用于前端

目录"/"应指向默认语言controller=>pagesslug=>home

/:lang-与上面相同,但使用选定的语言

/:段塞-controller=>pagesaction=>index并传递:slug参数,使用默认语言

/:lang/:slug-与上面设置的lang参数相同

/:控制器/:段塞-

/:lang/:controller/:slug-与上面设置的lang参数相同

  • 在这些链接中我不需要任何action-

用于管理面板

/admin-"控制器"=>'设置','操作'=>'索引

/admin/:controller/:action/。。。。这是默认的

  • 管理url中不需要语言参数,但存在操作,除了索引操作

此外,我应该如何在视图中创建链接,以便路由器正常工作?

    Router::connect("/admin", array('action' => 'index', 'controller' => 'settings', 'prefix' => 'admin', 'admin' => true));
    Router::connect("/admin/:controller", array('action' => 'index', 'prefix' => 'admin', 'admin' => true));
    Router::connect("/admin/:controller/:action/*", array('prefix' => 'admin', 'admin' => true));
    Router::connect("/:language/*", array('action' => 'home', 'controller' => 'pages'));
    Router::connect("/:language/:controller", array('action' => 'index'));
    Router::connect("/:language/:controller/*");

您可以复制第二组路由,但更改:语言为slug,您应该将其放在if中并验证给定的语言,如果它不验证,则加载slug路由。