我想为我的页面上的一些控件创建自定义视图助手。我决定使用自定义视图助手,因为这些控件对于不同的用户可能不同(登录但未登录)。但是我想为我的视图设置布局文件,而不是只返回__invoke函数中的html代码。有可能这样做吗?或者只有子视图允许为它们设置phtml视图文件?
编辑(因为我的问题引起了很多混淆) 这是我的视图助手调用函数:
public function __invoke()
{
$authService = new AuthenticationService();
$body = "<ul class='nav navbar-nav navbar-right'>";
if(!$authService->hasIdentity())
{
$body .= $this->wrapLi($this->makeUrl($this->view->url('users/default', array('controller' => 'register')), $this->view->translate('Register')));
$body .= $this->wrapLi($this->makeUrl($this->view->url('users/default', array('controller' => 'login')), $this->view->translate('Login')));
}
if($authService->hasIdentity())
{
$body .= $this->wrapLi($this->makeUrl($this->view->url('users/default', array('controller' => 'logout')), $this->view->translate('Logout')));
}
$body .= "</ul>";
return $body;
}
你可能会看到它只返回html。 我在layout.html中使用这个帮助器:
<?php echo $this->LoginViewHelper(); ?>
我想知道是否有另一种方法来创建由invoke函数返回的html。如果有可能制作模板。
答案 0 :(得分:0)
我认为你有点迷失,加载html的方法是使用通常从控制器调用的视图,你可以识别它们,因为它们在方法名称的末尾有单词action。
我建议你安装zend framework 2 skeleton,它提供了一个带有一些视图和控制器的模块。
但是如果你想做一些像你现在想做的事情。您可以在Application模块上创建一个名为Helper的新文件夹,定义名称空间,如第一行:
namespace Application\Helper;
然后创建一个静态方法:
class H {
public static function LoginViewHelper(){
}
}
你视图上的就像这样称呼
<?php echo \Application\Helper\H::LoginViewHelper() ?>