如何创建我自己的布局模板并将其分为header.phtml,content和footer.phml? ZF2

时间:2014-10-16 05:43:54

标签: zend-framework2 zfcuser

我正在学习Zend Framework 2并且已经完成了着名的专辑教程。所以我已经基本了解了发生了什么,但不幸的是我错过了布局的基本部分。

我想构建一个应该具有的基本Web应用程序:

  1. 为客人提供的主页
  2. 登录用户的完全不同的用户
  3. 在标题,内容,页脚中划分布局
  4. 我已经安装了ZF2 Skeleton Application和Zfcuser模块。网站和注册页面显示出他们应该的样子。

    我会在Application / view中找到所有布局文件,在Application / config / module.config.php中找到配置的路径

    但我还有几个问题:

    1. 如何将布局划分为标题,内容,页脚? (不同的模板)
    2. 如何创建自己的layout.phtml?最好的做法是覆盖Application / view中的那个,还是应该创建自己的模块来覆盖整个view_manager数组?
    3. 如何根据用户的登录情况加载不同的布局? zfcUser模块为它提供了一个帮助:

      如果($这 - > zfcUserIdentity()!):

    4. 但我不知道在哪里添加它。

      提前非常感谢你。如果有人有一个良好的教程链接 - 请发布它。我真的很感激。

1 个答案:

答案 0 :(得分:4)

  1. 要将布局模板划分为块,可以使用部分视图助手(zf2 docs),布局模板的简单示例:
  2. <html>
        <body>
            <?php
                // render template from view/partials/header.phtml
                echo $this->partial('partials/header');
            ?>
    
            <?php echo $this->content; ?>
    
            <?php
                // render template from view/partials/footer.phtml with some additional variables from layout scope
                echo $this->partial('partials/footer', [
                        'variable' => 'value',
                ]);
            ?>
        </body>
    </html>
    
    1. 如果它应该是新的不同布局模板,只需在模块的视图/布局路径中创建新模板,并像我上面展示的那样使用它(布局控制器插件)。 如果您想要从第三方模块覆盖布局模板(或任何其他模板),您可以在ViewManager配置(zf2 docs)中执行此操作,例如从ZfcUser模块覆盖登录模板:
    2. // module.config.php
      'view_manager' => [
          'template_map' => [
              'zfc-user/user/login' => '/path/to/custom/login-template',
          ],
      ],
      
      1. 有布局控制器插件(zf2 docs),允许您更改每个控制器操作的布局。例如,在主页控制器操作中,您可以为已记录的用户设置不同的布局,如下所示:
      2. if($this->zfcUserIdentity()) {
            $this->layout('layout/members');
        }
        

        一定要看看这个(不完整的)ZF2 Quick Start rewrite的最佳做法。