Я только начинаю изучать laravel 5.6, и у меня возникла проблема с передачей данных из формы в параметр маршрута. Итак, у меня есть этот маршрут:
Route::get('/tours/index/{province_id?}', 'TourController@index');
и вот моя форма:
<form method="GET" action="#">
<div class="siem">
<i class="fas fa-compass"></i>
<input style="padding-left:5px" size="66" id="province_id" class="search" list="provinces" name="province_id" placeholder="Siem Reap, Sihanouk Ville...etc or click on location icon to let us locate you"
/>
<datalist id="provinces">
@foreach($provinces as $province)
<option value="{{ $province->id }}">{{ $province->name }}</option>
@endforeach
</datalist>
</div>
<div class="tour">
<a onclick="searchProvince()" type="button" href="#">Find my tours</a>
<script>
function searchProvince(e){
// e.preventDefault();
let province_id = $("#province_id").val();
window.location.replace("/tours/index/" + province_id);
}
</script>
<i class="fas fa-search"></i>
</div>
</form>
прямо сейчас, в качестве обходного пути, я просто использую jquery для замены URL, и я знаю, что это не очень хорошая практика. У меня есть следующий метод индекса в моем TourController:
public function index($province_id = null)
{
if($province_id != null){
if(isset($_GET['sortBy']) == false){
$tours = Tour::with('latestTourImage')->where('province_id', $province_id)->get();
return view('tours.index', ['tours' => $tours, 'province_id' => $province_id, 'province' => Province::find($province_id)])->with('onGuest', '1');
}
else{
$tours = Tour::with('latestTourImage')->where('province_id', $province_id)->where('category', '=', $_GET['sortBy'])->get();
return view('tours.index', ['tours' => $tours, 'province_id' => $province_id, 'province' => Province::find($province_id)])->with('onGuest', '1');
}
}
else{
return redirect()->back();
}
}