Laravel 5 session() - >保持方法不起作用

时间:2016-11-01 21:45:43

标签: laravel session

我有一个视图,其中包含一个输入日期字段和一个表格。该表根据输入的日期填充。输入日期后,我在表单上使用POST方法来处理数据库请求,并返回与数据相同的视图。我还要返回输入的原始日期。我尝试了session()->keepflashOnly方法。无将输入日期返回到视图。 我的控制器:

   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 个答案:

答案 0 :(得分: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"