Provides a basic slugifier interface to transform text into strings suitable for URLs

2.0.0 2017-02-18 23:11 UTC


Build Status Latest Stable Version Total Downloads

This package is part of the Symfony Content Management Framework (CMF) and licensed under the MIT License.

A "slugifier" is a function which transforms a string such as this into a URL-friendly string such-as-this. Slugifiers are also known as "urlizers".

This package does not contain a slugifier implementation, it provides a standard interface (SlugifierInterface) for use by third party slugifiers and a CallbackSlugifier that is capable of wrapping most non-implementing third-party slugifiers to the SlugifierInterface.



Perhaps the best way to document this simple component is with a demonstration. You have an event subscriber which slugifies the title of a blog post:


use Symfony\Cmf\Api\Slugifier\SlugifierInterface;

class FooSubscriber
    private $slugifier;

    public function __construct(SlugifierInterface $slugifier)
        $this->slugifier = $slugifier;

    public function onEntitySave(\Some\Event $event)
         $entity = $event->getEntity();

You can then inject either a slugifier which already implements the CMF SlugifierInterface or you can use non-implementing libraries using the CallbackSlugifier. Using non-implementing libraries is very easy, assume you want to use the aferrandini/urlizer package (which is also used by the RoutingAutoBundle), you can configure the CallbackSlugifier object to call the Ferrandini\Urlizer::urlize() method:

$slugifier = new CallbackSlugifier('Ferrandini\Urlizer::urlize');
$fooSubscriber = new FooSubscriber($slugifier);

By using the Slugifier package you decouple your application from the slugifier implementation.

See also:

FIG Proposal

We proposed this to FIG but unfortunately the proposal did not get enough interest. We would still be happy to contribute this to a PSR should the interest come up and deprecate this package in favor of the PSR one.


Pull requests are welcome. Please see our CONTRIBUTING guide.

Unit and/or functional tests exist for this bundle. See the Testing documentation for a guide to running the tests.

Thanks to everyone who has contributed already.