akyos / ux-filters
A Symfony bundle to manage filters in live Component
1.0.6.2
2025-04-22 12:15 UTC
Requires
- php: ^8.0
- symfony/doctrine-bridge: *
- symfony/form: *
- symfony/orm-pack: ^2.4
- symfony/translation: *
- symfony/ux-live-component: ^2.21
README
Un bundle Symfony pour gérer facilement les filtres dans vos composants Live.
Installation
composer require akyos/ux-filters
Documentation
La documentation complète est disponible dans le dossier docs/
:
- Guide d'installation
- Types de filtres disponibles
- Configuration
- Exemples d'utilisation
- API Reference
Fonctionnalités principales
- Filtres de texte avec recherche LIKE
- Filtres de sélection (Choices)
- Filtres de date
- Filtres d'entités
- Filtres d'énumération
- Intégration avec la pagination
- Support des composants Live de Symfony
Exemple rapide
<?php namespace App\Twig\Components\Product; use Akyos\UXFilters\Class\Text; use Akyos\UXFilters\Trait\ComponentWithFilterTrait; use Akyos\UXPagination\Trait\ComponentWithPaginationTrait; use App\Entity\Product; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\UX\LiveComponent\Attribute\AsLiveComponent; use Symfony\UX\LiveComponent\DefaultActionTrait; #[AsLiveComponent] final class Index extends AbstractController { use DefaultActionTrait; use ComponentWithFilterTrait; use ComponentWithPaginationTrait; public function __construct() { $this->repository = Product::class; $this->setLimit(3); } protected function setFilters(): iterable { yield (new Text('name', 'Name'))->setSearchType('like')->setParams([ 'entity.name', 'entity.description', ]); } }
Licence
Ce bundle est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Template
<div{{ attributes }}> {{ form(formFilters) }} {% for product in elements %} <div class="product"> <div class="product__content"> <h3 class="product__title">{{ product.name }}</h3> <p class="product__price">{{ product.description|raw }}</p> <p class="product__price">{{ product.price }}</p> </div> </div> {% endfor %} {{ pagination|raw }} </div>