如何将phtml视图文件与自定义视图助手绑定

时间:2014-07-15 08:33:10

标签: php view zend-framework2

我想为我的页面上的一些控件创建自定义视图助手。我决定使用自定义视图助手,因为这些控件对于不同的用户可能不同(登录但未登录)。但是我想为我的视图设置布局文件,而不是只返回__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。如果有可能制作模板。

1 个答案:

答案 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() ?>