有没有人在Laravel中使用Ardent和存储库模式,并在保存时具有“自动水合”关系?如果是这样,规则是否需要在存储库中,或者它们是否可以在单独的Validator服务中?
发布于 2014-01-22 18:13:14
Ardent的基本思想是在模型本身中进行自动验证。然而,如果你想让你的应用尽可能的健壮,最好使用验证服务。最后,您可以随心所欲地使用该服务(甚至传递它的内部$rules),因此它完全是干的。
编辑:
假设您有这样一个验证服务
namespace App\Services\Validators;
class UserValidator extends Validator {
/**
* Validation rules
*/
public static $rules = array(
'username' => array('required'),
'email' => array('required','email'),
'password' => array('required','min:12','confirmed'),
'password_confirmation' => array('required','min:12'),
);
}在存储库中,您可以执行以下操作
public function store()
{
$v = new App\Services\Validators\UserValidator;
if($v->passes())
{
$this->user->create($input);
return true
}
return Redirect::back()->withInput()
->withErrors($v->getErrors());
}在Ardent模型中,您只需直接修改规则
Ardent::$rules = UserValidator::$rules查看Ardent docs,你可能会发现this article on validation很有趣,上面的代码就是基于那篇文章的。
https://stackoverflow.com/questions/21269051
复制相似问题