【问题标题】:How to remove action name from url in cakephp?如何从 cakephp 的 url 中删除动作名称?
【发布时间】:2014-09-29 02:57:09
【问题描述】:

我正在做 cakephp 项目。我已经使用 .htaccess 文件从 URL 中删除了 index.php,现在我想从 URL 中删除视图名称并添加其他两个不同的参数。假设我选择国家和城市,那么这两个参数应该会出现在选择它们的 URL 中。

我面临的问题是 cakephp 需要

www.example.com/Controllername/viewname

但我的要求是这样的

www.example.com/Controllername/param1/param2

如果我通过这种方式,它将寻找 param1 作为控制器和 param2 作为视图。

最初应该是这样的:

www.example.com/Controllername/

【问题讨论】:

    标签: php .htaccess cakephp url-rewriting


    【解决方案1】:

    在你的APP/routes.php

    // www.example/com/Controllername
    Router::connect('/Controllername', 
        array('controller'=>'Controllername', 'action'=>'index'));
    
    // www.example.com/Controllername/param1/param2
    Router::connect('/Controllername/:param1/:param2',
        array('controller'=>'Controllername', 'action'=>'index'), 
        array('pass' => array('param1', 'param2')));
    

    和你的控制器:

    // set to null/a value to prevent missing parameter errors
    public function index($param1=null, $param2=null) {
       //echo $param1 . ' and ' . $param2;
    }
    

    生成链接时:

    array('controller'=>'Controllername', 'action'=>'index', 'param1'=>'foo', 'param2'=>'bar');
    

    订单很重要。将paramX 更改为您想要的任何内容,即countrytown

    注意这不包括:controllername/param1 - 在本例中两者都必须存在。

    还有其他方法可以实现这一点。

    【讨论】:

    【解决方案2】:

    我认为您应该首先确保 mod-rewrite 模块已启用。如果启用了 mod_rewrite,您不必使用 .htaccess 从 url 中删除 index.php。检查如何在您的网络服务器手册中启用它,并且 cakephp 的默认 .htaccess 应该能够为您处理其余的路由。

    启用重写模块后,您可以修改@Ross 在上一个答案中指出的路由APP/routes.php

    // www.example/com/Controllername
    Router::connect('/Controllername', 
    array('controller'=>'Controllername', 'action'=>'index'));
    
    // www.example.com/Controllername/param1/param2
    Router::connect('/Controllername/:param1/:param2',
    array('controller'=>'Controllername', 'action'=>'index'), 
    array('pass' => array('param1', 'param2')));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      相关资源
      最近更新 更多