Chi*_*may 6 layout yii2 yii2-advanced-app
我有一个更改密码引导模式,当用户单击更改密码导航栏菜单时将触发该模式.
我已将模态包含在页脚中.但是如何ChangePassword model instance将页脚布局文件传递给页脚?
可以beforeRender Or EVENT_BEFORE_RENDER用吗?如果是,怎么样?
正如所建议的那样,我将以下代码放在/ config/bootstrap.php中:
yii\base\Event::on(yii\base\View::className(), yii\base\View::EVENT_BEFORE_RENDER, function() {
$modelChangePassword = new frontend\models\ChangePassword;
$this->view->params['modelChangePassword'] = $modelChangePassword;
});
Run Code Online (Sandbox Code Playgroud)
但它给出了Using $this when not in object context错误.
在渲染视图之前在控制器中添加它:
$this->view->params['model'] = $model;
...
$this->render(...); // this will render your view including main layout
Run Code Online (Sandbox Code Playgroud)
然后在视图中使用:
$model = $this->params['model'];
Run Code Online (Sandbox Code Playgroud)
更新:
如果您想为所有应用程序控制器全局使用它,您可以使用事件:
use Yii;
use yii\base\Event;
use yii\web\View;
...
Event::on(View::className(), View::EVENT_BEFORE_RENDER, function() {
...
Yii::$app->view->params['model'] = $model;
});
Run Code Online (Sandbox Code Playgroud)
将此代码放在应用程序引导程序中或例如在公共父控制器中.
官方文档: