Skip to content

yaovicoder/sluggable-bundle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sluggable Bundle

License

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

  1. 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           |

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages