fomvasss / laravel-url-facet-filter
Building and displaying facet filter parameters and managing them
1.7.0
2024-09-26 10:26 UTC
Requires
- illuminate/support: ^5.8|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
README
Building and displaying facet filter parameters and managing them
Installation
Run from the command line:
composer require fomvasss/laravel-url-facet-filter
Publishing
php artisan vendor:publish --provider="Fomvasss\UrlFacetFilter\ServiceProvider"
Usage
Build url`s
<a href="{{ \FacetFilter::build('color', 'red') }}">Red</a> <a href="{{ \FacetFilter::build('color', 'green') }}">Green</a> <a href="{{ \FacetFilter::build('size', 'm') }}">M</a> <a href="{{ \FacetFilter::build('size', 'xl') }}">XL</a>
Usage in controller
app/Http/Controllers/ProductControllr.php
<?php namespace App\Http\Controllers; class ProductController extends Controller { public function index(Request $request) { $filterAttrs = \FacetFilter::toArray($request->get(\FacetFilter::getFilterUrlKey())); $products = Product::with('media') ->facetFilterable($filterAttrs) // facetFilterable - for example your scope ->get(); return view('article.index', [ 'articles' => $products, ]); } }
Example, in url string:
https://my-site.com/products?⛃=color☛red⚬green♦size☛m♦ergonomic☛form-1⚬form-2
In php controller (after prepare FacetFilter::toArray()
):
array:3 [▼ "color" => array:2 [▼ 0 => "red" 1 => "green" ] "size" => array:1 [▼ 0 => "m" ] "ergonomic" => array:2 [▼ 0 => "form-1" 1 => "form-2" ] ]