0

我的控制器文件中有这段代码。

public function indexAction() { return new ViewModel(); }

它只显示 index.phtml 其内容只是:

<?php echo phpinfo();

这按预期工作。

我想使用公司自己的外观/样式,所以我复制了默认模板(module\Application\view\layout\layout.phtml)并将文件放入我自己的文件夹中。

我对 2 个模板文件进行了一些更改。在默认模板上,我添加了:

<hr>default<hr>

在我的新模板文件中,我添加了:

<hr>new<hr>

没有进行其他更改。

然后我将控制器功能更改为:

public function indexAction() {
    $viewModel = new ViewModel();
    $viewModel->setTemplate('directory/templates/flinders.phtml');

    return $viewModel;
}

我现在的问题是我的 index.phtml 似乎从未被调用过。phpinfo() 从未像以前那样显示在浏览器上。

而且,浏览器会显示我在默认模板和新模板上添加的文本。我认为使用 setTemplate 函数可以让我覆盖默认模板。所以我认为它应该只显示我对新模板所做的任何更改。而且即使我删除了新模板的所有内容,我的浏览器仍然会显示默认模板的内容。

关于如何解决我的问题的任何想法?谢谢

4

1 回答 1

1

看来我误解了模板和布局的含义。

模板 = 分配给操作的视图文件。indexAction 会自动查找 index.phtml。如果我通过 setTemplate 更改模板,框架将不会查找 index.phtml,而是使用我提供的任何内容。

布局 = 网站中所有页面的外观/感觉。$this->layout('some_phtml_file_here') 将覆盖 ZF2 框架提供的默认 layout.phtml。

这个网站(http://zf2test.akrabat.com/)帮助我更好地理解它!

于 2013-03-12T06:33:43.887 回答