Download the PHP package symkit/search-bundle without Composer
On this page you can find all versions of the php package symkit/search-bundle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download symkit/search-bundle
More information about symkit/search-bundle
Files in symkit/search-bundle
Package search-bundle
Short Description A standalone search bundle for Symfony applications.
License MIT
Informations about the package search-bundle
Search Bundle
A modern, memory-efficient global search bundle for Symfony applications. Supports multiple named search engines, each with its own providers (or shared providers), and includes a ready-to-use UI built with Symfony UX Live Components and Tailwind CSS.
Features
- Multi-engine: Define multiple search engines (
main,admin, ...) with independent or shared providers. - Memory Efficient: Uses PHP Generators (
yield) to handle large result sets without memory spikes. - SOLID Architecture: Decoupled providers, engines, and services with a Contract-first design.
- Events:
PreSearchEventandPostSearchEventfor query modification, result filtering, analytics. - Ready-to-use UI: Accessible global search modal built with Symfony UX Live Components and Tailwind CSS.
- Keyboard Navigation:
Cmd+K/Ctrl+Kto open, arrow keys to navigate,Enterto select. - Multi-category: Group results by category (Pages, Media, Routes, etc.) with custom priorities.
Requirements
- PHP 8.2+
- Symfony 7.0+ or 8.0+
Required for the UI component
- Tailwind CSS for styling
symfony/ux-live-componentandsymfony/ux-twig-componentfor the GlobalSearch componentsymfony/ux-iconsfor rendering iconssymfony/asset-mapperfor Stimulus controller auto-discovery
The UI is optional. The search API works without any of the above.
Installation
Install optional dependencies for the UI:
Configure Assets (ImportMap)
Register the Stimulus controller in your importmap.php:
Tailwind CSS Integration
Add the bundle's templates to your Tailwind scan:
Configuration
Single engine (default)
With no configuration, a single default engine is created with UI enabled:
Multiple engines
Define named engines, each with its own ui toggle:
- If
enginesis omitted, a singledefaultengine withui: trueis created. default_enginesets which engine is aliased toSearchServiceInterface. Falls back to the first declared engine.- Setting
engines: []disables all search functionality.
Usage
1. Create a Search Provider
Implement SearchProviderInterface and use the #[AsSearchProvider] attribute to assign it to an engine.
Shared provider (all engines):
Engine-specific provider:
Via YAML tags (alternative to the attribute):
Without the engine attribute, a provider is registered in all engines.
2. Add the UI Component
Include the GlobalSearch Live Component in your Twig layout:
The component handles:
- Keyboard Shortcuts:
Cmd+K/Ctrl+Kto open. - Debounced Search: Optimized typing experience.
- Results Grouping: Grouped by category, sorted by priority.
- Accessibility: ARIA roles,
aria-livefor screen readers.
3. Use the Search API Directly
Inject the default engine or the registry:
4. Listen to Search Events
Hook into the search lifecycle with PreSearchEvent and PostSearchEvent:
PreSearchEvent lets you modify or cancel the query before providers are called. PostSearchEvent lets you filter, reorder, or enrich the results.
Architecture
Advanced Customization
Search Result Model
| Parameter | Type | Description |
|---|---|---|
title |
string |
The main text displayed for the result. |
subtitle |
string |
Secondary information (e.g., path, category). |
url |
string |
The destination link when clicked. |
icon |
string |
ux_icon identifier (e.g., heroicons:photo). |
badge |
?string |
Optional badge text (e.g., status). |
Overriding Templates
Customize the search modal UI by creating:
Dedicated Exceptions
The bundle throws EngineNotFoundException (extends InvalidArgumentException) when requesting an unknown engine, making it easy to catch bundle-specific errors.
Contributing
All versions of search-bundle with dependencies
symfony/config Version ^7.0 || ^8.0
symfony/dependency-injection Version ^7.0 || ^8.0
symfony/framework-bundle Version ^7.0 || ^8.0
symfony/http-kernel Version ^7.0 || ^8.0