yic / sluggable-bundle
A Symfony bundle for slug-based entity routing.
Installs: 22
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^8.1
- doctrine/annotations: ^2.0
- doctrine/orm: ^2.15
- gedmo/doctrine-extensions: ^3.11
- sensio/framework-extra-bundle: ^6.0 || ^5.0
- symfony/config: ^6.4
- symfony/dependency-injection: ^6.4
- symfony/framework-bundle: ^6.4 || ^5.4
- symfony/http-foundation: ^6.4
- symfony/http-kernel: ^6.4
Requires (Dev)
- phpunit/phpunit: ^10.0
- symfony/phpunit-bridge: ^6.4
This package is auto-updated.
Last update: 2025-05-03 02:04:18 UTC
README
A Symfony bundle that provides automatic slug generation and slug-based routing (ParamConverter resolution by ID or slug) for Doctrine entities implementing SluggableInterface
.
✨Features
- Generic
SluggableInterface
for entities - ParamConverter that works with both IDs and slugs
- Automatic service registration
- Works with Gedmo Sluggable behavior
🧩Installation
- Install the bundle via Composer:
composer require yic/sluggable-bundle
⚙️Basic Usage
Implement Sluggable
use YIC\SluggableBundle\Entity\Interface\SluggableInterface; use Gedmo\Mapping\Annotation as Gedmo; class Product implements SluggableInterface { #[Gedmo\Slug(fields: ['title'])] private ?string $slug = null; public function getSlug(): ?string { return $this->slug; } public function setSlug(?string $slug): self { $this->slug = $slug; return $this; } }
Use in controllers
#[Route('/products/{id}', name: 'product_show')] public function show(Product $product): Response { // Works with: // /products/1 (ID) // /products/some-name (slug) }
Configuration
Default config (config/packages/yic_sluggable.yaml
):
yic_sluggable:
# Enable slug fallback when ID not found
slug_fallback: true
Development Setup
# Clone git clone https://github.com/yaovicoder/sluggable-bundle.git cd sluggable-bundle # Install deps composer install # Run tests composer test
📦 Dependencies
Core Requirements
| Package | Version | Purpose | |----------------------------------|-----------|---------------------------| | php | ^8.1 | PHP runtime | | symfony/framework-bundle | ^6.4 | Symfony core | | doctrine/orm | ^2.15 | Database abstraction | | gedmo/doctrine-extensions | ^3.11 | Slug behavior | | sensio/framework-extra-bundle | ^6.0 | ParamConverter |
Development Dependencies
| Package | Version | Purpose |
|----------------------------------|-----------|---------------------------|
| phpunit/phpunit | ^10.0 | Testing |
| symfony/phpunit-bridge | ^6.4 | Symfony test integration |
| vimeo/psalm | ^5.22 | Static analysis |