cnkt
cnkt

Reputation: 2973

Access parent view's variable from child view in Zend Framework 2

I'm using ZF2's View component as standalone for my project like this:

$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);

It works like charm. The child renders in model1. But the problem is, how can i access model1's variable key in model2?

Upvotes: 4

Views: 1931

Answers (1)

Stefano Torresi
Stefano Torresi

Reputation: 686

You can use the Zend\View\Helper\ViewModel to access a common root view model, and possibly traverse the whole view model tree from that.

Just set the root itself:

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

And now $this->viewModel()->getRoot() will return $model1 in every view template.

You can peek at how this is dealt with by default in Zend\Mvc\View\Http\ViewManager

Upvotes: 1

Related Questions