2016-08-04 4 views
0

Я парой маршрутовСохраняя выбрать значения между страницами

Route::get('/route_one', '[email protected]'); 
Route::get('/route_two', '[email protected]'); 

Они называют ту же функцию контроллера, поскольку эти страницы нуждаются в такой же массиве данных. Эта функция заключается в следующем

public function index() 
{ 
    $user = Auth::user(); 
    if($user) { 
     $fileData = $this->fillArrayWithFileNodes(new DirectoryIterator(public_path(). '/images')); 
     $currentPath= Route::getFacadeRoot()->current()->uri(); 

     if(!empty($fileData)) { 
      return view('index', compact('fileData', 'currentPath')); 
     } 
    } else { 
     return view('auth.login'); 
    } 
} 

Теперь вид индекса довольно прямо вперед, но это не имеет эту часть

@if($currentPath == 'route_one') 
    @include('layouts.searchbarRouteOne') 
@endif 
@if($currentPath == 'route_two') 
    @include('layouts.searchbarRouteTwo') 
@endif 

Поэтому в зависимости от того, что маршрут называется, отображается другая боковая панель. Теперь боковые панели, по существу, содержат нагрузку для выбранных входов, таких как:

<div class="col-lg-3"> 
    <div class="form-group"> 
     <label>Year</label> 
     <select id="year" class="form-control"> 
      <option value=""></option> 
      @foreach($fileData["route_one"] as $year => $products) 
       <option value="{{ $year }}">{{ $year }}</option> 
      @endforeach 
     </select> 
    </div> 
</div> 

Обе боковые панели имеют разные варианты выбора. Когда выбраны опции выбора, для отображения изображения выполняется аякс-вызов. Все это прекрасно работает.

Это моя проблема. У меня есть ссылка, чтобы добраться до route_one или route_two. Когда страница обновляется, когда нажимается ссылка, выбор находится в состоянии по умолчанию. То, что я хотел бы как-то сделать, - сохранить последнее состояние входов выбора. Я не храню эти данные в базе данных, которая может быть проблемой?

Кроме того, route_two полагается на опции выбора из route_one. Поэтому, когда выбрано route_two, мне нужно передать параметры route_ones.

Что было бы лучшим способом добиться того, что я хочу?

Благодаря

ответ

1

Подумайте, что вы пытаетесь достичь здесь: помните старые входные значения.

Вы можете отправить форму, щелкнув по ссылке, и запустите данные в контроллере или используйте JavaScript, сохраняя входные значения в хранилище браузера.

Простой пример использования обычный JavaScript

// Get all select-elements 
var inputs = document.querySelectorAll('select'); 

// Loop through them 
for (var i = 0; i < inputs.length; i++) { 
    // Set the old input value 
    inputs[i].value = localStorage.getItem(inputs[i].name); 

    // Start listening changes 
    inputs[i].addEventListener('change', store); 
} 

// The function to call when the value has changed 
function store(event) { 
    // Set the new value to the browser's storage 
    localStorage.setItem(event.target.name, event.target.value); 
} 

В этом примере ваши элементы формы должны иметь уникальные name атрибуты. Конечно, его можно отключить, например, id атрибут.

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