php - Yii 2 : Can I access a variable in a view that's rendered by another view?

标签 php variables scope views yii2

在 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/

相关文章:

jquery - 从另一个对象的单击事件中手动触发 jQuery 单击事件

C++ 变量类型限制

javascript - 将数据从 HTML 输入文本元素传递到 JavaScript 变量

java - Java中的两个 boolean 变量

php - 将新变量定义为旧值加 1 的总和

php - 无法获取 $_POST 值(php、html)

python - 嵌套的 Python 类需要访问封闭类中的变量

php - 来自 mac os x 的 Tsung 负载测试

PHP:验证十进制 Mysqli 数据类型

php - Zend Framework 2 中使用 PHPUnit 模拟服务