【问题标题】:Routing configuration in cakephpcakephp中的路由配置
【发布时间】:2011-03-03 05:38:39
【问题描述】:

我正在尝试在 cakephp 中实现路由。我希望像这样映射网址...

www.example.com/nodes/main -> www.example.com/main www.example.com/nodes/about -> www.example.com/about

所以我在我的 config/routes.php 文件中写了这个。

Router::connect('/:action', array('controller' => 'nodes'));

现在,我开始做事了,但是当我点击链接时,浏览器中的 url 看起来像 www.example.com/nodes/main www.example.com/nodes/about

有什么方法可以让网址按照路由的方式显示? 在 .htaccess 或 httpd.conf 中进行设置很容易 - 但我无权访问。

问候 维克拉姆

【问题讨论】:

    标签: cakephp routing cakephp-1.3


    【解决方案1】:

    基本上,如果您的链接是使用 Html 助手创建的,格式如下:

    <?php echo $this->Html->link('your link', array('controller'=>'nodes', 'action'=>'main'));?>
    

    然后 Cake 会将链接正确转换为 www.example.com/main

    但是如果你的链接是

    <?php echo $this->Html->link('your link', '/nodes/main/');?>
    

    他们将指向 www.example.com/nodes/main

    【讨论】:

      【解决方案2】:

      这应该可行:

      Router::connect('/main', array('controller' => 'nodes', 'action' => 'main'));
      Router::connect('/about', array('controller' => 'nodes', 'action' => 'about'));
      

      你也可以做一些更强大的事情,像这样:

      $actions = array('main','about');
      foreach ($actions as $action){
         Router::connect('/$action', array('controller' => 'nodes', 'action' => '$action'));
      }
      

      【讨论】:

      • 嗨,这已经使用我编写的代码为我工作了。它只是我要解决的地址栏中出现的 URL 问题。
      • 嗯,我看到了这种情况。我不记得为什么,现在,但我会看看。您是否尝试过编写控制器?因为在您的代码中缺少这些,所以被解释为实际的控制器工作。
      • 好的!这就是问题所在。使用链接助手时我没有编写控制器,因为我有默认控制器设置“节点”,这就是为什么它在地址栏中显示控制器以及操作。谢谢大佬。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多