2016-11-01 4 views
0

У меня есть представление с полем ввода даты и таблицей внизу. Таблица заполняется в соответствии с введенной датой. Когда вводится дата, я использую метод POST в форме, которая обрабатывает запрос БД и возвращает тот же вид с данными. Я также хотел бы вернуть исходную дату, которая была введена. Я пробовал session()->keep и flashOnly методов. Ни один из них не возвращает дату ввода в представление. Мой контроллер:Laravel 5 session() -> метод не работает

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> 

Edit: Это незначительное изменение зрения дало оптимальное решение. value="@if(isset($selected_date)){{$selected_date}}@endif"

+0

Большое спасибо. Ваш '$ selected_date' должен быть только в фигурных скобках. Теперь я могу видеть старую дату, но если я снова нахожу «Поиск спортсменов» (без изменения ввода), я получаю сообщение об ошибке: «Неожиданные данные найдены. Данные трейлинга», ссылающиеся на эту строку '$ inputDate = Carbon :: createFromFormat ('d/m/Y ', $ request [' tgroupdate ']); ' Должен ли я поместить это в другой вопрос? – louisav

+0

Нет необходимости в фигурных скобках вокруг '$ selected_date', '@' открывает и закрывает тег php. И об ошибке, 'print_r ($ request ['tgroupdate']); die(); 'проверьте, если вы получаете правильный формат даты. –

+0

Если я не использую фигурные скобки, он фактически печатает слово «$ selected_date» в поле даты. 'Die()' создал правильный формат: 12/10/2016 – louisav

Смежные вопросы