2016-05-28 6 views
1

Ich versuche zu lernen laravel. Ich weiß Codeigniter. In codeigniter3 werde ich die Formfehler als ein Array mit Schlüssel als Formularnamen zu erhalten, indem die FunktionLaravel Show Formular Fehler mit Formular Elementname als Schlüssel

$this -> form_validation -> error_array(); 

verwendet, wird es wie

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

Gibt es eine Möglichkeit in Laravel 5 zu tun, um die Anzeige gleich?

Bitte helfen. Jede Hilfe könnte geschätzt werden

Antwort

1

Sie eine Rückkehr von der Steuerung

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

oder

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

einstellen und Sie können Fehler in Ansicht drucken, wie

@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 
+0

Ich mache das schon. In dieser Methode, der Array-Index sind 1,2, ... Ich brauche den Formular-Element-Namen als Array-Index/Schlüssel – Arun

+0

Verwendung mit ('Schlüssel' => 'Nachricht') –

0

Laravel Controller verwendet ValidatesRequests Eigenschaft, die eine validate Methode bereitstellt. Hier ist Beispiel dafür, wie eine Anforderung zu validieren:

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. 
    } 

} 

Wenn Benutzereingaben nicht die Regeln des $this->validate() nicht passieren wird er automatisch Ihre Benutzer zurück in die Formularansicht mit altem Eingang und Fehlern umleiten werden. Die Fehler werden durch $errors variabel gehalten, die eine Instanz von Illuminate\Support\MessageBag ist, es auf Ihrer Ansicht anzuzeigen:

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

Oder Sie können durch Schlüsselfehlermeldung erhalten:

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

Zur Beantwortung Ihrer Frage, wie zu Anzeigefehler wie in CI Sie toArray() Methode von Illuminate\Support\MessageBag verwenden können:

$errors->toArray() 

Manuelle Validierung

Sie können auch Validator-Instanz manuell mit der Validator Fassade wie folgt verwenden:

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. 
    } 

} 

Wieder Sie die Fehler von $errors Variable wie oben erhalten.

Formular anfordern Validation

diese Methode zu verwenden, können Sie durch die Schaffung eines Formularvalidierung Anforderung mit artisan CLI starten:

php artisan make:request ContactRequest 

Es schaffen Sie eine ContactRequest Klasse, können Sie es in app/Http/Request/ finden Mappe.

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 array 
    */ 
    public function rules() 
    { 
     return [ 
      'subject' => 'required|max:225', 
      'message' => 'required', 
     ]; 
    } 
} 

Auf dem Controller-Methode Variable statt Request $request verwenden können Sie ContactRequest $request verwenden:

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. 
    } 

} 

Wenn eine Benutzereingabe gelangt wird es weiterhin den Code auf dieser Methode auszuführen andernfalls Benutzer zurück umgeleitet zu bilden Ansicht, und natürlich können Sie die Fehler wie oben zwei Methode anzeigen.

Verwandte Themen