从Zend Framework 2中的子视图访问父视图的变量

时间:2012-11-16 22:16:14

标签: zend-framework2 zend-view

我正在使用ZF2的View组件作为我的项目的独立组件:

$renderer = new PhpRenderer;
$resolver = new Resolver\AggregateResolver();
$stack = new Resolver\TemplatePathStack(array(
    'script_paths' => array(
        __DIR__ . '/view'
    )
));
$resolver->attach($stack);
$renderer->setResolver($resolver);

$model1 = new ViewModel;
$model1->setTemplate('template1');
$model1->setVariable('key', 'value');

$model2 = new ViewModel;
$model2->setTemplate('template2');

$model1->addChild($model2, 'child');

echo $renderer->render($model1);

它就像魅力一样。孩子在模特1中渲染。但问题是,如何在model2中访问model1的变量key

1 个答案:

答案 0 :(得分:1)

您可以使用Zend\View\Helper\ViewModel访问公共根视图模型,并可能从中遍历整个视图模型树。

只需设置根目录:

// right after you instantiated $model1
$modelHelper = $renderer->plugin('view_model');
$modelHelper->setRoot($model1);

现在$this->viewModel()->getRoot()将在每个视图模板中返回$model1

您可以在Zend\Mvc\View\Http\ViewManager

中查看默认情况下如何处理此问题