2017-08-12 20 views
0

Q:はどのように私は全体RegisterControllerクラスをつかむことなく、別のコントローラからの認証のResigsterController検証ルールを再利用することができますか?リユースlaravel検証ルール

... 

protected function validator(array $data) 
{ 
    return Validator::make($data, [ 
     'fname' => 'required|string|max:255', 
     'lname' => 'required|string|max:255', 
     'email' => 'required|string|email|max:255|unique:users', 
     'password' => 'required|string|min:6|confirmed', 
     'tos' => 'boolean|accepted', 
    ]); 
} 
... 

内の他のコントローラ:
はここでルールです
アプリ\のHttp \コントローラ\ UserController.php

public function update(Request $request, User $user) 
{ 
    //I need to validate $request with the rules from 
    //ControllersAuth\RegisterController.php 
} 
+1

フォームリクエストの検証のための特性を作成して、必要なときに使用することができます。 –

+0

あなたは特性と一緒に行きたい場合は私の答えをチェックしてください –

答えて

0
あなたが持つことができるので、ヘルパークラスを作成し使用してみてください

いくつかのコードはどのクラスでも再利用可能です。

あなたはヘルパークラスファイルの要求が検証ルールを追加することができますhere

0

のガイドがあるようにする方法がわからない場合は、uはそれを必要とする次の時間は、ファイル名を呼び出すことができ、元:

public function update(UserRequest $request,User $user){ 
} 



//1. Php artisan make:request UserRequest 
//2. add rule to UserRequest file 
public function rules() 
     { 
      return [ 
       'fname' => 'required|string|max:255', 
      'lname' => 'required|string|max:255', 
      'email' => 'required|string|email|max:255|unique:users', 
      'password' => 'required|string|min:6|confirmed', 
      'tos' => 'boolean|accepted', 
      ]; 
     } 

https://laravel.com/docs/5.4/validation#form-request-validation

0

私は形質を使用することをお勧めします。 は次のように形質を作成します。モデルでは

trait ValidationTrait { 
    public $errors; 

    public function validate($data) { 
     $Reflection = new \ReflectionClass(__CLASS__); 
     $ReflectionClass = $Reflection->newInstance(); 
     if(empty($ReflectionClass->rules)) return TRUE; 

     $v = Validator::make($data, $ReflectionClass->rules); 

     if($v->fails()) { 
      $this->errors = $v->failed(); 
      return FALSE; 
     } 

     return TRUE; 
    } 

    public function validationErrors() { 
     return $this->errors; 
    } 
} 

class myModel extends Eloquent { 
    use ValidationTrait; 

    public $rules = array(
     'fname' => 'required|string|max:255', 
     'lname' => 'required|string|max:255', 
     'email' => 'required|string|email|max:255|unique:users', 
     'password' => 'required|string|min:6|confirmed', 
     'tos' => 'boolean|accepted', 
    ); 
} 

はそれが好きなコール:

$myModel = new myModel(); 

if($myModel->validate(Input::all()) { 
    //validate success.... 
}else{ 
    return $Customer->validationErrors() 
} 

希望はこれがうまくあなたを助けるかもしれません!

関連する問題