2016-04-10 5 views
0

Ich befolge strenge Praktiken wie 5.2 Dokumente, aber die Validierung macht mich verrückt.Sitzung Flash-Nachrichten nicht irgendwo trotz Codierung

1) Dies ist ein Code-Snippet, das ich in der Steuerung direkt nach dem $ property-> save() habe; Funktion

Session::flash('success', 'property table filled'); 
Session::flash('errors', 'These are the errors'); 

etc

zweites Problem ist, dass die Validate-Methode, wenn es Fehler gibt, es zurück zum Formular erstellen Seite zurückkehrt, aber statt die vorhandenen Daten in den Feldern verbindlich, wischt es alles aus , damit ich das Formular von Grund auf neu starten muss. Außerdem ist es keine Nachrichten keine Fehler

public function store(Request $request){    

      $this->validate($request, array(

      'country' => 'bail|required|max:100', 
      'region' => 'bail|required|max:100', 
      etc 

Gemäß der Dokumentation nicht angezeigt, dies allein sollte, im Falle fehlschlagen, passieren, mit dem Create-Methode oben (der einen wieder zurück, dass das Formular zeigt die Post erstellen) und eine Reihe von Fehlern ausgeben. Da ich eine Resource Controller verwenden, alle Routen sind in einer Zeile enthalten ist, und auch, alle Controller und Sachen sind in der Web-Middleware:

Route::group(['middleware' =>'web'], function(){ 
Route::auth(); 

    Route::get('/', function() { 
    return view('welcome'); 
}); 

Route::get('/home', '[email protected]'); 
Route::resource('property', 'PropertyController'); 


}); 

Dies ist fehlerlos Schnipsel ich in der habe partials, die im Layout enthalten ist, so dass es Nachrichten (erfolgreich oder fehlgeschlagen) für jede Seite angezeigt wird, die eine Sitzung hat:

@if(Session::has('success')) 
<div class="alert alert-success" role="success"> 
<strong>Success: </strong> {{Session::get('success')}} 

</div> 
@endif 

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

Wenn stattdessen das Speichern der Daten in der Tabelle Datenbank erfolgreich war, es wird immer noch keine Erfolg Flash-Session-Nachricht aussprechen.

Frage:

es irgendwelche Fehler in den übermittelten Daten, warum nicht angezeigt alles und warum es mir alle Felder nicht leer. Die Wirkung des Leerens der Felder ist die gleiche Sache, die nicht passieren würde, wenn Sie die Seite aktualisieren (ausgefüllte Felder bleiben gefüllt), sondern wenn Sie auf das URL-Feld des Browsers klicken und es drücken.

Antwort

0

Nun, das ist einer der Fälle, wo Sie die Antwort bekommen, aber Sie wissen nicht genau, warum es funktioniert.

Während ich bereits die Resource Controller-Methode innerhalb der Web-Middleware in der Routen-Datei hatte, stellt sich heraus, dass ich nicht setzen hatte die (es oder vielmehr war nicht genug) dies:

Session::flash('success', 'property table filled'); 
Session::flash('errors', 'Posting failed'); 

in der Property-Controller (und dann diese Steuerung innerhalb der Web-Middleware in der Routen-Datei), aber tatsächlich diese beiden Linien auf ihrem eigenen Recht dort in th Routen Datei

Session::flash('success', 'property table filled'); 
Session::flash('errors', 'Posting failed'); 

Dies ist so sehr, dass, wenn ich sie entfernen vom Controller funktioniert das noch, aber wenn ich es entferne sie aus der Routes-Datei, tut es nicht.

Verwandte Themen