Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 23.08.2019 14:57:40

Помогите с фильтром результатов поиска в Laravel

Есть некая форма для поиска

<form action="/search" method="GET">

    <input value="{{request()->query('search')}}" type="text" name="search" placeholder="Search...">
    <button type="submit"><i class="searchicon"></i></button>
          
</form>

В web.php такой роут

Route::get('/search', 'ShowCustomerController@search');

В ShowCustomerController такая функция

public function search(){
        $search = request()->query('search');
        $products = Products::where('title', 'LIKE', "%{$search}%")->get();
        return view('searchresults')->with('products', $products);

После поиска слова "product1" у меня в URL отображается /search?search=product1

Сталкиваюсь с проблеммой когда потом хочу отфильтровать этот поиск.
На той же странице есть другая форма

<form action="/filter">
   <input value="0" min="0" name="minprice" type="number">
   <input min="0" name="maxprice" type="number">
</form>

в web.php такой роут

Route::get('/filter', 'ShowCustomerController@filter');

Дальше в контроллере

public function filter(Request $request)
    {
        $url = url()->previous().'/'.'filter?minprice=0&maxprice=2323'; ///такая строка мне нужна потом в URL
        $product = Product::with(***тут нужно принимать только те продукты которые уже выбраны по поиску search->query) ***)
        if ($request->has('minprice')) {
    		$users->where('price', '<', "%$request->minprice%");
    	}

    }

Вот я запутался и не знаю что делать дальше.
Так как на выходе после фильтрации в URL мне нужна строка.

/search?search=product1/filter?minprice=0&maxprice=2323

Я не понимаю что такое request()->query(); и не понимаю как сделать URL тот который мне нужен.
Помогите пожалуйста, тот кто разбирается.

Не в сети

#2 23.08.2019 15:03:37

Re: Помогите с фильтром результатов поиска в Laravel

Если в контроллере есть две функции

public function search(){
     $products = 'The list of users';
}

public function filter(){
     $products
}

Можно ли получить переменную в другой функции?

Не в сети

#3 23.08.2019 17:55:39

Re: Помогите с фильтром результатов поиска в Laravel

Решил вопрос так

public function search(){
     $products = 'The list of users';

     return $products
}

public function filter(){
     $products = $this->search()->products;
}

Изменено dmytrotus (23.08.2019 17:55:58)

Не в сети

#4 23.08.2019 17:58:55

Re: Помогите с фильтром результатов поиска в Laravel

Копаю дальше.
Мне нужно в методе

public function filter(Request $request)

Фильтровать результат из метода

public function search()

Переменную с результатами я могу передать. Но проблемма в том что во время выполнения метода filter массив из продуктами очищается так как никто не обращается к методу

public function search()

Подскажите как быть?

Не в сети

Подвал раздела