【发布时间】:2014-01-22 22:44:31
【问题描述】:
有人在 Laravel 中使用 Ardent 和存储库模式并在保存时让它“自动水合”关系吗?如果是这样,规则是否需要在存储库中,或者它们可以在单独的验证器服务中?
【问题讨论】:
有人在 Laravel 中使用 Ardent 和存储库模式并在保存时让它“自动水合”关系吗?如果是这样,规则是否需要在存储库中,或者它们可以在单独的验证器服务中?
【问题讨论】:
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 很有趣,上面的代码基于那篇文章。
【讨论】: