Laravel 5.1:启动函数未被调用



我想在保存或更新模型时验证它是否有效。因此,我创建了一个名为eloquentvalidation的类,我从它扩展了所有模型的类。下面是我在eloquentvalidation中的启动函数:

public static function boot()
{
parent::boot();
static::creating(function($item)
    {
        if(!$item->isValid()) return false; 
    });
static::updating(function($item)
    {
        if(!$item->isValid()) return false;
    });
}

我的问题是boot永远不会被调用。我在里面放了一个断点,它从来没有触发过。所以我的模型在保存之前没有验证。

我有另一个项目使用相同的逻辑,它正在工作。我能看到的唯一区别是,我在另一个项目中有命名空间,而在这个项目中没有。因此,失败类被定义为

use IlluminateDatabaseEloquentModel;
class EloquentValidating extends Model {

,而工作的定义为:

namespace AppModels;
use IlluminateDatabaseEloquentModel;
class EloquentValidating extends Model {

名称空间会导致这种问题吗?为什么??如果我必须引入名称空间,我会这样做,但我想了解为什么它是原因。

谢谢Benoit

看起来您需要更新已编译的类。运行

php artisan clear-compiled 

然后……

php artisan optimize

如果问题仍然存在,那么手动删除文件bootstrap/cache/services.json,它将在下一个请求

中自动生成。

最新更新