Building and displaying facet filter parameters and managing them
Run from the command line:
composer require fomvasss/laravel-url-facet-filter
php artisan vendor:publish --provider="Fomvasss\UrlFacetFilter\ServiceProvider"
<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>
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"
]
]