Laravel模型可填写请求验证规则

时间:2016-07-22 11:27:46

标签: php validation laravel-5

我一直在使用laravel几次,当我之前使用laravel 4时,我曾经将验证规则添加为模型的静态成员。像这样:

class Foo extends ValidatableModel
{
    protected static $rules = [
        'bar' => 'required'
    ];
}

ValidatableModel扩展了Laravel的基础Model,然后使用自定义方法填充属性。我没有fillable财产。

现在,在Laravel 5中,我没有使用它,因为验证的进一步分离是好的。随着Request的出现,您可以在其中指定规则,我现在使用fillable属性,但我不喜欢您在fillable属性中指定字段的重复项然后在特定的Request对象中添加相同的字段。添加/删除数据库字段时工作量太大。

我认为fillable属性是需要验证的属性。如果我在这里错了,请纠正我,但到目前为止,这是我的经历。

我有一些想法,但我仍然要测试它是否有效。基本上,我必须创建自己的基础Model,我将从“对应的”fillable类(基于命名约定)设置Request的值。如下所示:

class FooRequest
{
    public static $_RULES = [
        'bar' => 'required'
    ];

    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return self::$_RULES;
    }
}

...

class ValidatableModel extends Model
{
    public $fillable = [];

    public static function boot()
    {
        parent::boot();

        static::creating(function($model) {

            $requestClass = 'come up based on naming convention';
            $rules = $requestClass::$$_RULES;

            $model->fillable = array_keys($rules);
        });
    }
}

我不知道这是否有效。我只是想着它,也许我会在回家时尝试一下。为了消除fillable属性中的重复,看起来很多工作。

你们有什么想法?

0 个答案:

没有答案