User::event('before_insert', function ($user) {
if ($user->status != 1) {
return false;
}
});是不是感觉不方便,同样模型之间也不好做继承。现在进行修改:
首先创建一个App模型,然后其他模型都继承App
App中:
protected static function init()
{
##新增前回调 这里的$model就是$this
self::beforeInsert(function ($model) {
if (method_exists($model, 'before_insert')) {
return $model->before_insert();
}
});
##新增后回调
self::afterInsert(function ($model) {
if (method_exists($model, 'after_insert')) {
return $model->after_insert();
}
});
## ... 其他事件一样
##删除后回调
self::afterDelete(function ($model) {
if (method_exists($model, 'after_delete')) {
return $model->after_delete();
}
});
}这样我们就可以按下面的方式定义方法去做我们的模型事件了,而且支持继承,使用起来是比较熟悉的类方法;里面用$this->data来获取当前数据,如果是before...中return false来阻止数据库操作。 public function before_insert()
{
}
public function after_insert()
{
}
public function before_update()
{
}
//其他事件如果有更好的使用方法请回复下,这也是考虑了一阵才这样修改的,暂时没有想到更好的办法。最后,还有较多的修改和便捷操作已经在开源系统eduaskcms中使用,欢迎下载体会。
EduaskCMS是基于ThinkPHP5.0.11框架开发的一个免费开源的内容管理系统,开发的理念不光注重后台,同样注重后台功能的扩展;更加注重的是前台的快速开发和便捷。系统希望实现的目标是“让你的代码,能省则省”。
系统网站:http://www.eduaskcms.xin
后台测试:http://www.eduaskcms.xin/run
用户名:test123
密 码:test123
建站手册:https://www.kancloud.cn/laowu199/e_use/
开发手册:https://www.kancloud.cn/laowu199/e_dev
码云下载:https://gitee.com/eduaskcms/eduaskcms
最佳答案