yii2 如何实现所有action之前执行一段代码?
需要的功能
程序初始化之后,在action*执行之前,执行一段代码:查询一个数据表 {{%config}}
,字段varname ,value,用于控制器中当做全局变量来使用,如何实现这样的绑定?
thinkphp是很方便的进行,在tags.php 里面绑定 Behaviors,yii2是如何实现这样的功能,需要修改的是哪一个文件?
我自己写的
[
'on beforeAction' => ['app\events\initSiteConfig','assign']
]
php
#文件 app/events/initSiteConfig.php namespace app\events; use yii\base\Event; use yii\db\Query; class initSiteConfig extends Event { public static function assign() { $rows = (new Query()) ->select('*') ->from('{{%config}}') ->all(); $arr = array(); foreach ($rows as $row) { $arr[$row['varname']] = $row['value']; } \Yii::$app->params = array_merge(\Yii::$app->params, $arr); } }
2015-5-24补充:
觉得有点迷糊了,如果在yii2中想在所有Action之前执行2个绑定
1)初始化站群配置 app\events\initSiteConfig
init()
2)初始化会员日志,如何实现? app\events\initUser
init()
我的实现:
#/config/web.php 中加入
'on beforeAction' => [ ['app\events\initSiteConfig','init'],['app\events\initUser','init']],
报错提示:
call_user_func() expects parameter 1 to be a valid callback, first array member is not a valid class name or object
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在controller中写beforeaction函数,别忘了最后return true;
还有init(),会在controller实例化的时候执行