0

我有一个网址

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

但这是非常丑陋的解决方案。有人有什么想法吗?谢谢

4

2 回答 2

0

有一些解决方案:

1)从控制器获取模块名称和控制器名称并传输到视图(你不喜欢)。

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;
  }
}

将路径设置为助手:有 3 个链接如何以不同的方式执行(我不知道您想要如何)

从公共目录访问和使用 Zend View Helpers

SO:Zend:我在哪里/如何注册自定义视图助手?

SO:Zend 视图助手配置路径

// using in `view`
<?php echo $this->urlCustom(); ?>
于 2014-01-14T09:41:11.160 回答
-1

您可以在Zend_Registrymodule中设置和controller名称,无论是从引导程序还是从任何插件,都可以在局部视图中使用它。

<?=$this->url(array('controller' => Zend_Registry::get('controller'), 'module' => Zend_Registry::get('module')), null, true);?>
于 2014-01-13T09:41:27.380 回答