在 Yii 2 中,遵循 MVC 模式, Controller 将某些变量传递给 View 。但是,有时 View 本身会呈现另一个 View 。
例如,在默认生成的 CRUD View 中,create.php 和 update.php 都呈现 _form View :
<?= $this->render('_form', [
'model' => $model,
]) ?>
我是否可以使用 Controller 传递的变量来 _form 中的 create.php?
假设 Controller 像这样呈现它:
return $this->render( 'create', [
'model' => $model,
'myVar' => $myValue,
] );
现在我可以在 create.php 中访问 $myVar 但我不能在 _form(由 create.php 呈现。无论如何我可以访问它吗?或者我是否需要显式地将它传递给这样的形式(在 create.php 中):
return $this->render( '_form', [
'model' => $model,
'myVar' => $myValue,
] );
最佳答案
render
函数使用 extract()
将您的参数转换为局部函数上下文中的常规变量,这是 include
文件的完成。这就是您在 View 中“接收”这些值的方式。
这意味着如果您在该 View 中再次调用 render
(或任何其他变体),它将创建一个新的局部上下文,并且“上面”的局部变量将不存在.这就是为什么需要将变量传递给每个调用的原因,正如您自己已经弄清楚的那样。
关于php - Yii 2 : Can I access a variable in a view that's rendered by another view?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30257236/