【问题标题】:prefix routing cakephp前缀路由 cakephp
【发布时间】:2011-06-09 07:34:44
【问题描述】:

提炼的问题: 我了解 'admin'=>true/false 的使用以及在我的情况下 'user'=>true/false 并且可以创建适合每个场景的链接,但是我正在寻找一种方法来实现这一点到路由文件。 例如,路由文件中已经有这个:

Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

但是,我也希望任何带有前缀的链接都执行相同的重定向,并删除前缀.. 我试过了:

Router::connect('*/pages/*', array('controller' => 'pages', 'action' => 'display', 'user'=>false));
Router::connect('/user/pages/*', array('controller' => 'pages', 'action' => 'display', 'user'=>false));

但这不起作用。 有什么帮助吗? 干杯

---------(下面的原始问题)--------

只是一个快速的.. 我不确定如何防止前缀, 例如,如果我在 domain.com/admin/order 或 domain.com/user/order 中,它们是订单控制器中的 admin_ 和 user_ 操作,并且导航菜单包含指向页面显示的链接(控制器页面操作显示,**),当他们单击它们会自动以当前前缀为前缀。 如何在路由器文件中设置重定向通配符前缀(即。/pages/)?

编辑- 我的意思是我想重定向到一个非前缀的 url.... 因为当用户在一个前缀 url 中并点击一个简单的链接时 controller=> action=> ,它会自动为链接添加前缀当前前缀,在这种情况下是管理员或用户,当我只是一个非前缀链接时。 (即,如果 cake 仅在所涉及的链接中实际指定前缀时才使用前缀,而不是在每个简单的 html 帮助器控制器、操作链接上继续使用它们,我会更喜欢它。)

【问题讨论】:

    标签: php cakephp routing


    【解决方案1】:

    如果你使用 $html helper 来创建链接,那么你可以使用

    $html->link('users', array('prefix' => $this->params['prefix'],'controller' => 'users','action' => 'index'))
    

    【讨论】:

    • 我的意思是我想重定向到一个非前缀的 url.... 因为当用户在一个前缀 url 中并点击一个简单的链接时 controller=> action=> ,它当我只是一个非前缀链接时,会使用当前前缀自动为链接添加前缀,在这种情况下是管理员或用户。 (即,如果 cake 仅在所涉及的链接中实际指定前缀时才使用前缀,而不是在每个简单的 html 帮助器控制器、操作链接上继续使用它们,我会更喜欢它。
    • 你试过这个$html->link('users', array('prefix' => '','controller' => 'users','action' => 'index')) 来避免自动加前缀吗?
    • 他在正确的轨道上$html->link('users', array('controller'=>'users','action'=>'index','admin'=>false);
    • 好的,所以我认为 'admin'=>false 仅适用于管理员前缀,但它也可以用于其他前缀,在我的情况下 'user'=>false(以及 admin false) .
    • @DavidYell 感谢您的更正。如果您将其发布为答案,那就太棒了。
    【解决方案2】:

    我不是 cakePHP 的用户,所以这有点摸不着头脑,但在 Zend 框架中,您可以在视图中使用 $this->baseUrl('controller/action');,这将为您提供所需的 url。

    例如,如果我在 www.example.com/admin/moderate/ 并且我使用以下代码编写了视图链接:

    <a href="users/search">Search for a user</a>

    链接是:

    www.example.com/admin/moderate/users/search

    如果我用过:

    <a href="<?= $this->baseUrl('users/search'); ?>">Search for user</a>

    现在的输出是:

    www.example.com/users/search

    在谷歌快速搜索后,我认为 cakePHP 替代品是 Router::url(array('controller'=>'users','action'=>'search'), true);

    【讨论】:

      猜你喜欢
      • 2013-10-09
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2014-02-19
      相关资源
      最近更新 更多