2016-11-01 9 views
0

私は、入力日付フィールドとその下のテーブルを持つビューを持っています。テーブルには、入力された日付に基づいて入力されます。日付が入力されると、DBリクエストを処理し、データとともに同じビューを返すフォームでPOSTメソッドを使用します。入力された元の日付も戻したいと思います。私は​​とflashOnlyメソッドを試しました。いずれも入力日付をビューに戻しません。 マイコントローラ:Laravel 5 session() - > keepメソッドが機能しない

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]); 

マイビュー:

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

答えて

1

あなたはいけない、セッションの日付を保存する必要があります。変数に日付を保存してビューに送信し、ビューで変数が存在するかどうかをisset php関数で確認することができます。コントローラ

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']]); 

で、ビューで

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

編集:ビューでこのマイナーチェンジは、最適解を与えました。 value="@if(isset($selected_date)){{$selected_date}}@endif"

+0

ありがとうございました。 '$ selected_date'はちょうど中括弧で囲まなければなりません。私は以前の日付を見ることができますが、Search Athletesをもう一度クリックすると(入力を変更せずに)、次のエラーを受け取ります: "$ data = m/Y '、$ request [' tgroupdate ']);' これを別の質問にする必要がありますか? – louisav

+0

'$ selected_date'の前後に中括弧を入れる必要はなく、 '@'はphpタグを開き、閉じます。そしてエラーについては、 'print_r($ request ['tgroupdate']); die(); 'あなたが正しい日付形式を取得しているかどうかを確認してください。 –

+0

中括弧を使用しないと、日付フィールドに '$ selected_date'という単語が実際に表示されます。 'die()'は正しい書式を生成しました:12/10/2016 – louisav

関連する問題