2016-09-06 4 views
2

Ich versuche meine Hand beim Lernen Laravel.Gemeinsame Validierungsfunktion über mehrere Controller in Laravel

Ich habe einen Benutzer Form, die auf dieser Strecke schreiben

Route::post('users/add','[email protected]')->middleware('admin'); 

Die Speicherfunktion in der Userscontroller eine andere Funktion aufruft validateForm genannt, die im Grunde die Eingabe von der Form bestätigt, wie so

class usersController extends Controller 
{ 
/* 
*Store a user in database 
*/ 
function store(){ 
    $input=Request::all(); 

    // create the validation rules ------------------------ 
    $rules = array(
    'name'    => 'required',      // just a normal required validation 
    'lastname'   => 'required',      // just a normal required validation 
    'email'   => 'required|email|unique:users',  // required and must be unique in the users table 
    'password'   => 'required', 

    ); 
    $validationResponse=$this->validateForm($input,$rules); 

    if($validationResponse=="passed"){ 


     $user=new \App\User; 
     $user->name=$input['name']; 
     $user->email=$input['email']; 
     $user->lastname=$input['lastname']; 
     $user->password=\Hash::make($input['password']); 
     $user->userlevel=isset($input['isAdmin'])?1:0; 
     $user->save(); 

     return redirect('users'); 
} 
else{ 
     return Redirect::to('users/create') 
     ->withErrors($validationResponse)->withInput(); 


    } 


    } 

/* 
*validate user form input 
*/ 
function validateForm($input,$rules){ 

     // do the validation ---------------------------------- 
     // validate against the inputs from our form 
     $validator = Validator::make($input, $rules); 

     // check if the validator failed ----------------------- 
     if ($validator->fails()) { 

      // get the error messages from the validator 
      $messages = $validator->messages(); 

      return $messages; 
     } 
     else{ 
      return 'passed'; 
     } 
    } 
} 

Nun, das ist in Ordnung für den Zugriff vom userController, aber was ist, wenn ich einen anderen Controller besitze projectsController und ich möchte auf die gleiche Funktion zugreifen, dh validateForm

Wo sollte ich diese gemeinsame Funktion setzen und wie kann ich von jedem Controller darauf zugreifen?

Antwort

0

Laravel in Antwort auf diese gebaut ist Form Request

einfach ein Formular Anfrage erstellen mit php artisan make:request UserCheck und setzen in Ihren Validierungsregeln in der Methode rules

/** 
* Get the validation rules that apply to the request. 
* 
* @return array 
*/ 

public function rules() { 
    return [ 
     'name'    => 'required',      // just a normal required validation 
     'lastname'   => 'required',      // just a normal required validation 
     'email'   => 'required|email|unique:users',  // required and must be unique in the users table 
     'password'   => 'required', 

    ]; } 

Und nennen es

/* 
* Store a user in database 
*/ 
public function store(UserCheck $request) 
{ 
    // The incoming request is valid... 
} 
Verwandte Themen