Laravel验证 - 请求类的最佳实践

时间:2016-02-26 16:21:01

标签: php validation laravel laravel-5 laravel-validation

Laravel(目前为5.​​2)说

  

对于更复杂的验证方案,您可能希望创建“表单请求”。表单请求是包含验证逻辑的自定义请求类。

我已全部实现了这一点,但现在我需要导入一些不是来自HTTP的数据,而是来自上传的文档。

是否有一种简单的方法可以使用Request类中设置的规则手动验证数据,还是采用标准化的Laravel方式分离规则,以便可以在多个位置使用它们?

注意:我有不同的存储和更新等规则

我想到的一种方法是在我的模型上创建一些静态属性,例如。 User :: $ storeRules,然后我可以在我的Request类中返回这个数组,并在其他地方使用Validator类手动返回它们。

感谢。

1 个答案:

答案 0 :(得分:0)

我认为正确的方法是在模型中使用验证。

Easy Laravel 5书的引用:

  

熟悉Ruby on Rails等框架的读者习惯了   在模型中定义验证规则,然后使用本机方法   如有效吗?确定模型对象的属性是否为   达到预期。 Laravel支持类似的方法,尽管它   确实需要开发人员做一些额外的工作才能   实现理想的验证工作流程

也许这本书的例子也可以提供帮助。模特:

class Todolist extends Model {

    private $rules = [
        'name' => 'required',
        'description' => 'required'
        ];

    public function validate()
    {
        $v = \Validator::make($this->attributes, $this->rules);
        if ($v->passes()) return true;
        $this->errors = $v->messages();
        return false;
    }
}

用法:

$data = [
    'name' => 'San Juan Vacation',
    'description' => 'Things to do before leaving for vacation'
    ];

$list = new Todolist($data);

if ($list->validate()) {
    $errors = $list->errors();
} else {
    $list->save();
}

另一位着名的Laravel书系列作者(Code Bright,Code Happy和即将推出的Code Smart) - Dayle Rees的文章:http://daylerees.com/trick-validation-within-models/