是否可以使用zend url helper重置参数获取当前url而不传递url选项?

时间:2011-10-05 05:05:22

标签: php zend-framework

如果我从视图中调用$ this-> url(),我会获取带参数的url。例如:/ test / view / var1 / value1

有没有办法获取没有参数的当前url / location(var1 / value1)并且没有传递urlOptions:

例如,如果我使用它,它可以工作:

  

$ this-> url(array(“controller”=>“test”,“action”=>“view”),null,true);   //返回/测试/视图

但我想避免传递参数

  

$这 - > URL(阵列(),NULL,TRUE);

有没有办法做到这一点?

3 个答案:

答案 0 :(得分:3)

不是真的 - 路由器(由url视图助手调用)用于生成链接的Zend_Controller_Request_Http对象并不能真正区分模块/控制器/操作参数和您的操作可能使用的其他参数。

使用您在上面引用的第一个表单,或者如果您需要适用于每个操作/控制器的解决方案,请创建类似的内容:

class MyApplication_Controller_Action_Base extends Zend_Controller_Action {
    public function preDispatch() {
        //Generate a URL to the module/controller/action 
        //(without any other parameters)
        $this->view->bareUrl = $this->view->url(
            array_intersect_key(
                $this->getRequest()->getParams(),
                array_flip(array('module','view','controller')
            ),
            null,
            true
        );
    }
}

在任何视图中,您都可以使用<?=$this->bareUrl?>

答案 1 :(得分:3)

这听起来像是视图助手的工作。像这样的东西?

class Zend_View_Helper_Shorturl {

    public function shorturl() {
        $request = Zend_Controller_Front::getInstance()->getRequest();
        $module = $request->getModuleName();
        $controller = $request->getControllerName();
        $action = $request->getActionName();
        return $this->view->url(array('module'=>$module, 'controller'=>$controller,'action'=>$action), null, true);
        //return "/$controller/$action"; //Left this in incase it works better for you.

    }
}  

然后你只需在你的视图中写下$this->shorturl();

要明确这一点会进入scripts/helpers/Shorturl.php

修改 事实上,我刚试过这个并且它有效。我想这是使用的解决方案。

class Zend_View_Helper_Shorturl {

    public function shorturl() {
        return $this->view->url(array('module'=>$module, 'controller'=>$controller,'action'=>$action), null, true);
    }
}

答案 2 :(得分:1)

只需使用 $ this-&gt; url()即可获得类似于浏览器网址中显示的baseUrl / controller,例如,如果它是www.your-domain.ro/project/members它将返回项目/成员