我有一个网址
/module/controller/action/id/10
想要实现的是为视图部分
中的A标记生成以下URL/module/controller
所以基本上我想删除动作名称和额外的id参数
如何在部分内部使用$ this-> url()而不必从控制器传递任何变量?
由于
编辑:
好的,所以我设法编写了一段代码:
<?php
$module = Zend_Controller_Front::getInstance()->getRequest()->getModuleName();
$ctrl = Zend_Controller_Front::getInstance()->getRequest()->getControllerName();
echo $this->url(array('controller' => $ctrl, 'module' => $module), null, true);
?>
但这是非常难看的解决方案。任何想法?感谢
答案 0 :(得分:0)
有一些解决方案:
1)获取模块名称&amp;来自Controller的控制器名称并传输到视图(你不喜欢)。
2)像你那样做(丑陋的解决方案)。
3)编写自定义View Helper。以下示例为您提供解决方案。
// view helper
class Custom_View_Helper_UrlCustom extends Zend_View_Helper_Abstract
{
public function urlCustom()
{
$module = Zend_Controller_Front::getInstance()->getRequest()->getModuleName();
$ctrl = Zend_Controller_Front::getInstance()->getRequest()->getControllerName();
return '/'.$module.'/'.$ctrl;
}
}
将路径设置为帮助程序: 有三个链接如何以不同的方式做(我不知道你想要的是什么)
Accessing and using Zend View Helpers from a common directory
SO:Zend: Where/how can I register custom view helpers?
SO:Zend view helper configure path
// using in `view`
<?php echo $this->urlCustom(); ?>
答案 1 :(得分:-1)
您可以通过Bootstrap或任何插件在Zend_Registry中设置module
和controller
名称,并可以在部分视图中使用它。
<?=$this->url(array('controller' => Zend_Registry::get('controller'), 'module' => Zend_Registry::get('module')), null, true);?>