编辑原文更清晰。现在我认为有一个新的问题是纯语法。ZF2部分查看帮助
我是OOP和Zend Framework 2的新手。试图理解partials的用法。我还在扩展由其他人首先启动的应用程序。因此,实体/网关/控制器/视图的命名约定确保对于指定的操作,返回正确的模板。我试图使用“partial('/ nav/index.phtml');”作为在索引页面的标题中插入一个片段的一种方式。但是我想在其他页面上使用不同的部分。
继马歇尔的建议,在TemplateController,我加入一个变量(nav_template)的视图模型指定要使用的导航哪个部分:
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class TplController extends AbstractActionController
{
public function topicAviewAction()
{
$viewModel = new ViewModel();
$viewModel->setTerminal(true);
$viewModel->setVariable('nav_template', 'nav/topica.phtml');
return $viewModel;
}
public function topicBviewAction()
{
$viewModel = new ViewModel();
$viewModel->setTerminal(true);
$viewModel->setVariable('nav_template', 'nav/topicb.phtml');
return $viewModel;
}
}
我用下面的命令来验证我的变量是被包括在所述对象,该对象是
echo $viewModel->nav_template;
然而,当我去使用包括在layout.phtml部分执行以下操作:
<?php echo $this->partial(isset($nav_template) ? $nav_template : 'nav/index'); ?>
显然不是使用/找到$ nav_template的值。我哪里做错了?
这是因为你设置变量视图脚本,而不是布局。再次查看我的答案,并仔细查看变量分配给的内容:'$ this-> layout() - > setVariable(' –
另外,如果您正在使用,则不会让布局显示出来'setTerminal(true)' - 禁用布局 –
以下是Rob Allen有关访问另一个视图模型中viw变量的有用博客文章:http://akrabat.com/zend-framework-2/access-view-variables-in -another-view-model/ – dualmon