После поиска он переходит на страницу результатов. В моем случае:
Route::post('/search', 'Frontend\FrontController@filterSearch');
На этой странице есть та же форма поиска, что и на любой другой странице. Фильтрация поиска на всех остальных страницах работает без проблем. Но когда я пытаюсь выполнить поиск на странице результатов (после того, как что-то искал), мне нужно выбрать все поля, чтобы поиск отфильтровал результат. На других страницах мне не нужно выделять все поля. Вот мой контроллер:
public function filterSearch(Request $request){
//imports
$categories = Category::all();
$languages = Language::all();
$years = Year::all();
//partials menu variable
$menu = Menu::all();
$movie = Movie::query();
// Search for a movie based on its name.
if ($request->name != null) {
$movie->where('name', 'LIKE', '%' . $request->name . '%');
}
// Search for a movie based on the year.
if ($request->year != null) {
$movie->where('year_id', '=', $request->year);
}
// Search for a movie based on the language.
if ($request->language != null) {
$movie->where('language_id', '=', $request->language );
}
// Search for a movie based on the review.
if ($request->review != null) {
$movie->where('review', 'LIKE', '%' . $request->review . '%');
}
// Get the results and return them.
$filtered = $movie->latest()->paginate(20);
//return $request->language;
return view('frontend/search/filter-search', compact('filtered', 'menu', 'categories', 'languages', 'years'));
}
Вот форма (такая же для всех остальных страниц):
{!! Form::open(['method' => 'POST', 'action' => 'Frontend\FrontController@filterSearch', 'class' => 'form-style-1']) !!}
<div class = "row">
<div class = "col-md-12 form-it">
<label>Enter Name</label>
<input name = "name" type = "text" placeholder = "Enter Name">
</div>
<div class = "col-md-12 form-it">
<label>Language</label>
<div class = "group-ip">
<select name = "language" class = "ui fluid dropdown">
<option>Filter Language</option>
@foreach($languages as $language)
<option value = "{{$language->id}}">{{ucfirst($language->language)}}
</option>
@endforeach
</select>
</div>
</div>
<div class = "col-md-12 form-it">
<label>Enter Reviews (In stars e.g 7.5)</label>
<input name = "review" type = "text" placeholder = "Enter Reviews Amount">
</div>
<div class = "col-md-12 form-it">
<label>Release Year</label>
<div class = "row">
<div class = "col-md-12">
<select name = "year">
<option>Year</option>
@foreach($years as $year)
<option value = "{{$year->id}}">{{$year->year}}</option>
@endforeach
</select>
</div>
</div>
</div>
<div class = "col-md-12 ">
<input class = "submit" type = "submit" value = "Search">
</div>
</div>
{!! Form::close() !!}
Здесь, если я буду искать, используя имя «the» и только год, оставляя поле языка пустым, поиск будет работать, как задумано. Но на странице результатов, если я сделаю то же самое, это не даст мне результатов, если я не заполню все поля. Включая язык.






Проблема была решена. Проблема заключалась в том, что на моей странице результатов поиска у меня было несколько полей, которые не возвращали null. Я использовал dd($request->all()), чтобы увидеть, все ли возвращается null. Но некоторые поля не возвращали null, и в этом была проблема. Забыл на первый вариант поставить value=“”.