Laravel mostra un errore di module con il nome dell'elemento del module come chiave

Sto cercando di imparare laravel . Conosco Codeigniter . In codeigniter3 l'errore di forma come una matrix con chiave come nome del module usando la function

 $this -> form_validation -> error_arrays(); 

mostrerà come

 arrays( 'form_element1' => 'this field is required', 'form_element2' => 'this field is required' ) 

C'è qualche modo in laravel 5 per fare lo stesso?

Per favore aiuto. Qualsiasi aiuto potrebbe essere apprezzato

puoi impostare un return dal controller

 return redirect->back()->withErrors($request->all()); 

o

 return redirect->back()->withErrors(Input::all()); 

e puoi printingre errori in vista come

 @if (count($errors) > 0) <div class="alert alert-danger"> <strong>Whoops!</strong> There were some problems with your input.<br><br> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif 

Il controller di Laravel utilizza la caratteristica ValidatesRequests che fornisce un metodo di validate . Ecco un esempio di come validationre una richiesta:

 namespace App\Http\Controllers; class MyController extends Controller { public function store(Request $request) { $this->validate($request, [ 'subject' => 'required|max:255', 'message' => 'required', ]); // All input is valid, do your task. } } 

Se gli input dell'utente non superano le regole di $this->validate() , verranno reindirizzati automaticamente alla visualizzazione del module con input e errori precedenti. Gli errori sono contenuti nella variabile $errors che è un'istanza di Illuminate\Support\MessageBag , per visualizzarla sulla tua vista:

 @if (count($errors) > 0) <div class="error"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif 

Oppure puoi get l'errore per chiave:

 @if($errors->has('subject')) {{ $errors->first('subject');}} // Printed: Subject field is required. @endif 

Per rispondere alla tua domanda su come visualizzare errori come in CI puoi usare il metodo toArray() di Illuminate\Support\MessageBag :

 $errors->toArray() 

Convalida manuale

Puoi anche utilizzare manualmente l'istanza del validatore usando la facciata del Validator , in questo modo:

 namespace App\Http\Controllers; use Validator; class MyController extends Controller { public function store(Request $request) { $validator = Validator::make($request->all(), [ 'subject' => 'required|max:255', 'message' => 'required', ]); if ($validator->fails()) { return redirect('your-form-uri')->withErrors($validator)->withInput(); } // All input is valid, do your task. } } 

Ancora una volta è ansible get gli errori dalla variabile $errors come sopra.

Convalida della richiesta di module

Per utilizzare questo metodo, è ansible iniziare creando una richiesta di validation del module utilizzando la CLI artisan :

  php artisan make:request ContactRequest 

Ti creerà una class ContactRequest , la troverai in app/Http/Request/ folder.

 namespace App\Http\Requests; use App\Http\Requests\Request; class ContactRequest extends Request { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return arrays */ public function rules() { return [ 'subject' => 'required|max:225', 'message' => 'required', ]; } } 

Sulla variabile del metodo del controller invece di utilizzare Request $request è ansible utilizzare la ContactRequest $request :

 namespace App\Http\Controllers; use App\Http\Requests\ContactRequest; class MyController extends Controller { public function store(ContactRequest $request) { // All input is valid, do your task. } } 

Se l'input dell'utente passa, continuerà a eseguire il codice su quel metodo, altrimenti l'utente verrà reindirizzato alla vista module e, naturalmente, è ansible visualizzare gli errori come i due methods sopra riportti.