如果我从视图中调用$ this-> url(),我会获取带参数的url。例如:/ test / view / var1 / value1
有没有办法获取没有参数的当前url / location(var1 / value1)并且没有传递urlOptions:
例如,如果我使用它,它可以工作:
$ this-> url(array(“controller”=>“test”,“action”=>“view”),null,true); //返回/测试/视图
但我想避免传递参数
$这 - > URL(阵列(),NULL,TRUE);
有没有办法做到这一点?
答案 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它将返回项目/成员