Zend控制器Url在视图中

时间:2014-01-12 19:59:19

标签: php templates zend-framework url-routing zend-router

我有一个网址

/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);
?>

但这是非常难看的解决方案。任何想法?感谢

2 个答案:

答案 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中设置modulecontroller名称,并可以在部分视图中使用它。

<?=$this->url(array('controller' => Zend_Registry::get('controller'), 'module' => Zend_Registry::get('module')), null, true);?>