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
.
- See also the
require
section of composer.json
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:
<?php
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();
$entity->setSlug($this->slugifier->slugify($entity->getTitle());
}
}
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:
- All Symfony CMF documentation - complete Symfony CMF reference
- Symfony CMF Website - introduction, live demo, support and community links
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.