編輯原文更清晰。現在我認爲有一個新的問題是純語法。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