Laravel(目前为5.2)说
对于更复杂的验证方案,您可能希望创建“表单请求”。表单请求是包含验证逻辑的自定义请求类。
我已全部实现了这一点,但现在我需要导入一些不是来自HTTP的数据,而是来自上传的文档。
是否有一种简单的方法可以使用Request类中设置的规则手动验证数据,还是采用标准化的Laravel方式分离规则,以便可以在多个位置使用它们?
注意:我有不同的存储和更新等规则
我想到的一种方法是在我的模型上创建一些静态属性,例如。 User :: $ storeRules,然后我可以在我的Request类中返回这个数组,并在其他地方使用Validator
类手动返回它们。
感谢。
答案 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/