В моем шаблоне мое поле поиска находится в заголовке, и мне нужно сделать свою функцию из AppServiceProvider
так что я могу иметь доступ к нему со всех точек зрения.
Моя проблема в том, что я не знаю, как это сделать!
Вот моя логика:
Product
имеет subcategory
а также subcategory
имеет category
так что я не понимаю category_id
в моих продуктах вместо этого я получаю subcategory_id
в моей таблице продуктов.
Шоу категория имена в выпадающем списке, но поиск в подкатегорий этой категории.
Объясните:
У меня есть категория laptop
и у него есть подкатегория hp
lg
asus
которые у меня есть продукты в них. Я хочу поиск title xxxx
в категории laptop
и он смотрит на те подкатегории, которые hp, lg, asus
Пока у меня есть этот код в моем AppServiceProvider
но не уверен в этом
View::composer('frontend.index', function ($view) {
$searchTitle = request('title');
$subcategories = null;
$subcategories = Subcategory::when($searchTitle, function ($query) use ($searchTitle) {
return $query->where('title', 'like', "%{$searchTitle}%");
})
->paginate(10)
->appends(request()->query());$view->with('subcategories', $subcategories);
});
И это моя форма:
<form class="search" action="">
<input type="hidden" name="type" value="product">
<input type="text" name="q" class="search_box" placeholder="Enter your keyword ..." value="">
<div class="collections-selector">
<select class="single-option-selector" data-option="collection-option" id="collection-option" name="collection">
@foreach($subcategories as $search)
<option value="{{$search->id}}">{{$search->title}}</option>
@endforeach
</select>
</div>
<button class="search_submit" type="submit">
<svg aria-hidden="true" role="presentation" class="icon icon-search" viewBox="0 0 37 40"><path d="M35.6 36l-9.8-9.8c4.1-5.4 3.6-13.2-1.3-18.1-5.4-5.4-14.2-5.4-19.7 0-5.4 5.4-5.4 14.2 0 19.7 2.6 2.6 6.1 4.1 9.8 4.1 3 0 5.9-1 8.3-2.8l9.8 9.8c.4.4.9.6 1.4.6s1-.2 1.4-.6c.9-.9.9-2.1.1-2.9zm-20.9-8.2c-2.6 0-5.1-1-7-2.9-3.9-3.9-3.9-10.1 0-14C9.6 9 12.2 8 14.7 8s5.1 1 7 2.9c3.9 3.9 3.9 10.1 0 14-1.9 1.9-4.4 2.9-7 2.9z"></path></svg>
</button>
</form>
Следуйте по пути: project\app\Providers
есть файл AppServiceProvider.php
имея такой метод, как:
public function boot()
{
}
В этом boot
метод, поместите свою логику и поделитесь тем, что вы хотите поделиться на всех представлениях, как:
View::share('key', 'value');
теперь это key
доступно для всех представлений независимо от того, вызывается ли оно с какого контроллера.
Я решил использовать метод контроллера вместо AppServiceProvider
и получить маршрут any
Таким образом, пользователь может использовать окно поиска в любом маршруте.
Route::any()
Спасибо за помощь.