【问题标题】:Does Ardent for Laravel work with Repository Pattern?Ardent for Laravel 是否适用于存储库模式?
【发布时间】:2014-01-22 22:44:31
【问题描述】:

有人在 Laravel 中使用 Ardent 和存储库模式并在保存时让它“自动水合”关系吗?如果是这样,规则是否需要在存储库中,或者它们可以在单独的验证器服务中?

【问题讨论】:

    标签: laravel-4 ardent


    【解决方案1】:

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

    【讨论】:

    • 好的,但是有没有办法让 Ardent 在存储库或验证服务(我目前拥有)中查看规则?
    猜你喜欢
    • 2018-08-21
    • 2014-02-14
    • 2014-03-15
    • 2010-10-11
    • 2016-10-08
    • 1970-01-01
    • 2014-01-27
    • 2023-01-20
    • 1970-01-01
    相关资源
    最近更新 更多