Ladent的Ardent是否与Repository Pattern一起工作?

时间:2014-01-21 21:03:21

标签: laravel-4 ardent

任何人都在Laravel中使用Ardent并使用存储库模式并在保存时将其“自动保湿”关系?如果是这样,规则是否需要存储在存储库中,还是可以在单独的Validator服务中?

1 个答案:

答案 0 :(得分:1)

Ardent的基本思想是在模型中完成自动化。但是,如果您希望尽可能提高应用程序的稳定性,最好使用验证服务。最后,您可以在任何地方使用该服务(或甚至传递它的内部$规则),因此它完全是DRY。

修改

假设您有这样的验证服务

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很有趣,上面的代码基于该文章。