【发布时间】:2012-06-19 05:55:15
【问题描述】:
注意:这是一个老问题,这里的答案不再有效(自 beta5 起)。请参阅this 问题,了解如何使用 ZF2 稳定版。
我从手册中查看了at this example。请注意,这是 Zend 框架的第 2 版。
我创建了这个助手:
<?php
namespace Mats\Helper;
use Zend\View\Helper\AbstractHelper;
class SpecialPurpose extends AbstractHelper
{
protected $count = 0;
public function __invoke()
{
$this->count++;
$output = sprintf("I have seen 'The Jerk' %d time(s).", $this->count);
return htmlspecialchars($output, ENT_QUOTES, 'UTF-8');
}
}
?>
然后尝试像这样注册它:
return array(
'di' => array('instance' => array(
'Zend\View\HelperLoader' => array('parameters' => array(
'map' => array(
'specialpurpose' => 'Mats\Helper\SpecialPurpose',
),
)),
)),
);
但在视图中执行此操作时,例如 add.phtml
<?php echo $this->specialPurpose(); ?>
它会崩溃,说它找不到帮助器。
但是,在同一个 add.phtml 文件中我可以这样做
<?php $helper = new Mats\Helper\SpecialPurpose(); ?>
并且可以访问它,所以我猜命名空间应该是正确的?
目前我是在Module.php中注册的,但我也在其他地方尝试过。
我的目标是在我的模块中的所有视图中访问视图助手,而不必在每个 phtml 文件中创建它的实例,也不必每次都在控制器中添加它。 em>
如何做到这一点?谢谢。
【问题讨论】:
标签: php dependency-injection zend-framework2 zend-view