wangzhoubin 2017-11-29 16:54:01 1987次浏览 1条评论 0 1 0

瞎折腾了把行为的简单使用熟悉了一下,真的不用不知道一用知道,框架深似海,有些是文档上面理解不到的,自己通过琢磨,会更了解。为了以后不重复去猜测和看文档,赶快写一个日志,方便自己方便众人!
好了,说说行为吧。
由于权威文档之行为篇都已经讲解了行为绑定事件了,现用现绑,我现在将的是在配置里面直接使用行为。

public function events()
{
    return [
        ActiveRecord::EVENT_BEFORE_VALIDATE => 'beforeValidate',
    ];
}

public function beforeValidate($event)
{
    // 处理器方法逻辑
}


那么如何将他直接在配置文件里面使用呢?请移臀

'on search' => function ($event) {
    Yii::info("搜索的关键词: " . $event->keyword);
},
//行为1
'as indexer' => [
    'class' => 'app\components\IndexerBehavior',
    // ... 初始化属性值 ...
],
//行为2
'as 行为' => ['app\components\IndexerBehavior','事件处理函数'],

上面是配置信息,用as 触发事件,我可以随便命名as XXXX 或者干脆不命名,在这里都可以。
行为1 总会去调用events()方法,然后根据事件去调用.
行为2会直接调用'事件处理函数' 不会走events这个渠道.

由于 处理 检查每个请求是否登录没有登录则转接登录,已经登录则不用处理。 这个需求,看了几个文章的解决方案是 写一个控制器中间层来检查‘这个是否登录跳转’或者behaviors(),想想这样每一个都要去继承一下这个中间层,挺烦躁的,可以直接通过配置处理,感觉大气了很多。
再者,这个需求,说是一个事件,还是说一个行为,我觉得应该是一个行为,一个对 “用户请求识别的行为”,所以就想用行为去处理,当然可能最终还是需要通过事件去转入事件,但是从代码角度依然是在行为之中。
当然以上举例的行为1,行为2,其实有很多用途,因为它是在框架顶部就处理,不用程序员涉及到控制器,所以也就方便了你我他,避免混淆。
好了,这个事情就到了尾声,由于仅仅看了文档,没有去看别人的项目代码和实际的使用,以及源码,这里仅仅是从简单使用上去说明,不太准确的地方请各位仁兄多多指点,我好纠正。
QQ|Email:wangzhoubin@live.com
Date :2017-11-29 16:50

觉得很赞
您需要登录后才可以评论。登录 | 立即注册