注意:这是一个老问题,这里的答案不再有效(自 beta5 起)。请参阅此问题,了解如何使用 ZF2 稳定版进行操作。
我已经从手册中查看了这个示例。请注意,这是 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 文件中创建它的实例,也不必每次都在控制器中添加它。
如何做到这一点?谢谢。