2016-11-01 3 views
0

Ich habe eine Ansicht mit einem Eingabedatum Feld und eine Tabelle darunter. Die Tabelle wird basierend auf dem eingegebenen Datum ausgefüllt. Wenn das Datum eingegeben wird, verwende ich eine POST-Methode auf dem Formular, die die DB-Anfrage behandelt und die gleiche Ansicht mit den Daten zurückgibt. Ich möchte auch das ursprüngliche Datum zurückgeben, das eingegeben wurde. Ich versuchte session()->keep und flashOnly Methoden. Keiner gibt das Eingabedatum an die Ansicht zurück. Mein Controller:Laravel 5 Sitzung() -> halten Methode nicht funktioniert

public function groupTestAthletes(Request $request) 
{   
    $inputDate = null; 
    $tests = null; 
    if ($request['tgroupdate']){ 
     $inputDate = Carbon::createFromFormat('d/m/Y', $request['tgroupdate']); 
     $tests = Test::where('test_date', '=', $inputDate->format('Y-m-d'))    
      ->orderBy('athlete_id', 'desc')    
      ->get();    
    } 
    $request->session()->keep(['tgroupdate']);   
    //$request->flashOnly(['tgroupdate']); 
    return view('npr.test_athletes', ['tests' => $tests]); 

Meine Ansicht:

 <form class="form-inline" role="form" method="POST" action="{{ route('admin.search_tgroup') }}"> 
      {{ csrf_field() }}            

     <div class="form-group"> 
      <label for="tgroupdate" class="control-label">Test Date</label> 

      <div class="input-group date" id="testgroupdatepicker"> 
       <input name="tgroupdate" type="text" style="background-color:#ffffff" readonly="" 
        value="{{ Session::get('tgroupdate') }}" class="form-control"> 
       <div class="input-group-addon"> 
        <span class="glyphicon glyphicon-th"></span> 
       </div> 
      </div> 
     </div>      
     <div class="form-group"> 
       <button type="submit" class="btn btn-primary">Search Athletes 
       </button> 
       <input type="hidden" name="_token" value="{{ Session::token()}}"> 
     </div> 
    </form> 

Antwort

1

Sie brauchen nicht das Datum in der Sitzung zu speichern. Sie können das Datum in einer Variablen speichern, es an die Ansicht senden und in der Ansicht können Sie überprüfen, ob die Variable mit der Funktion isset php existiert.

Kontroller

public function groupTestAthletes(Request $request) 
{   
    $inputDate = null; 
    $tests = null; 
    if ($request['tgroupdate']){ 
     $inputDate = Carbon::createFromFormat('d/m/Y', $request['tgroupdate']); 
     $tests = Test::where('test_date', '=', $inputDate->format('Y- m-d'))    
      ->orderBy('athlete_id', 'desc')    
      ->get();    
    } 
    return view('npr.test_athletes', ['tests' => $tests,'selected_date' => $request['tgroupdate']]); 

Und in der Ansicht,

<form class="form-inline" role="form" method="POST" action="{{ route('admin.search_tgroup') }}"> 
      {{ csrf_field() }}            

     <div class="form-group"> 
      <label for="tgroupdate" class="control-label">Test Date</label> 

      <div class="input-group date" id="testgroupdatepicker"> 
       <input name="tgroupdate" type="text" style="background-color:#ffffff" readonly="" 
        value="@if(isset($selected_date)) $selected_date @endif" class="form-control"> 
       <div class="input-group-addon"> 
        <span class="glyphicon glyphicon-th"></span> 
       </div> 
      </div> 
     </div>      
     <div class="form-group"> 
       <button type="submit" class="btn btn-primary">Search Athletes 
       </button> 
       <input type="hidden" name="_token" value="{{ Session::token()}}"> 
     </div> 
    </form> 

Edit: Diese geringfügige Änderung in der Ansicht gab die optimale Lösung. value="@if(isset($selected_date)){{$selected_date}}@endif"

+0

Vielen Dank. Ihr '$ selected_date' muss nur in geschweiften Klammern stehen. Ich kann jetzt das alte Datum sehen, aber wenn ich erneut auf Athleten suchen klicke (ohne die Eingabe zu ändern), erhalte ich einen Fehler: "Unerwartete Daten gefunden.Trailing Daten" bezieht sich auf diese Zeile '$ inputDate = Carbon :: createFromFormat ('d/m/Y ', $ request [' tgroupdate ']); ' Muss ich das lieber in eine andere Frage stellen? – louisav

+0

Keine geschweiften Klammern um '$ selected_date' erforderlich, '@' öffnet und schließt das php-Tag. Und über den Fehler, print_r ($ request ['tgroupdate']); sterben(); 'Überprüfen Sie, ob Sie das richtige Datumsformat erhalten. –

+0

Wenn ich nicht die geschweiften Klammern verwende, druckt es tatsächlich das Wort '$ selected_date' im Datumsfeld. Das 'die()' erzeugte das korrekte Format: 12/10/2016 – louisav

Verwandte Themen