我有一个视图助手类
namespace Users\View\Helper;
use Zend\View\Helper\AbstractHelper;
class Userfunctions extends AbstractHelper
{
protected $count = 0;
public function test()
{
return 'testing';
}
public function __invoke($str, $find)
{
if (! is_string($str)){
return 'must be string';
}
if (strpos($str, $find) === false){
return 'not found';
}
return 'found';
}
}
在module.config.php中,我调用了视图助手类,其中在view_helpers数组中调用了Userfunctions。
'view_helpers' => array(
'invokables' => array(
'Userfunctions' => 'Users\View\Helper\Userfunctions',
// more helpers here ...
)
),
我想要实现的是,我需要调用测试函数()..
我怎样才能做到这一点..
我知道打电话
echo $ this->用户功能("我"," e");
这将调用invode函数并返回found..but我需要调用测试函数。
谢谢,
答案 0 :(得分:2)
尝试以下方法:
echo $this->plugin('Userfunctions')->test()
答案 1 :(得分:1)
在视图中按名称$this->userfunctions('me', 'e');
调用您的插件实际上只是方法Zend\View\Renderer\PhpRenderer::plugin('userfunctions')
的简写,因此使用Bram Gerritsen答案绝对正确。
我要补充的是,许多默认视图助手遵循检查传递给__invoke
函数的参数数量的约定,如果没有提供,则返回插件的实例。
例如
namespace Users\View\Helper;
use Zend\View\Helper\AbstractHelper;
class Userfunctions extends AbstractHelper
{
protected $count = 0;
public function __invoke($str, $find)
{
if (0 === func_num_args()) {
return $this;
}
return $this->render($str, $find);
}
public function render($str, $find)
{
if (! is_string($str)){
return 'must be string';
}
if (strpos($str, $find) === false){
return 'not found';
}
return 'found';
}
public function test()
{
return 'testing';
}
}
然后,您可以访问视图中的所有方法,以及__invoke
的默认功能。
$this->userfunctions();
$this->userfunctions()->test();
$this->userfunctions()->render('me', 'e');