从Laracasts \ Validation类中

时间:2015-07-21 21:58:45

标签: laravel laravel-4 laravel-validation

我有以下表单验证类:

class EditItemsForm extends Laracasts\Validation\FormValidator
{
    protected $rules = [
        'name' => 'required|alpha'
    ];
}

我需要使用$rules中的值来填充Former::withRules(),以便它可以做到这一点。

我可以尝试添加一个静态getRules方法,以便我可以Former::withRules(EditItemsForm::getRules())获取受保护的值,但这需要创建EditItemsForm的新实例,其父FromValidator需要Laracasts\Validation\FactoryInterface作为第一个构造函数参数。

示例:

public static function getRules()
{
    return with(new self(null))->rules;
}

叫我被宠坏了,但我以前从来没有处理过这个问题。因此,当输入值传递给控制器​​时,习惯于Laravel在后台进行魔法依赖注入。

如何在不必拥有$rules实例的情况下获取FactoryInterface的值,或者如何动态创建该实例以将其传递到getRules?< / p>

1 个答案:

答案 0 :(得分:0)

您是否尝试过Laravel的IoC container来实例化EditItemsForm类。这将解决您的依赖关系。

App::make('EditItemsForm');

Laravel docs的引用

  

IoC容器功能强大,无需解析任何类   在许多场景中完全配置。例如:

class FooBar {

   public function __construct(Baz $baz)
   {
      $this->baz = $baz;
   }

}

$fooBar = App::make('FooBar');