UseMuffin / Slug

Slugging for CakePHP
MIT License
35 stars 14 forks source link
cakephp cakephp-plugin php slug

Slug

Build Status Coverage Total Downloads License

Slugging for CakePHP

Installation

Using Composer:

composer require muffin/slug

Load the plugin using the CLI command:

./bin/cake plugin load Muffin/Slug

Usage

To enable slugging add the behavior to your table classes in the initialize() method.

public function initialize(array $config): void
{
    //etc
    $this->addBehavior('Muffin/Slug.Slug', [
        // Optionally define your custom options here (see Configuration)
    ]);
}

Please note that Slug expects a database column named slug to function. If you prefer to use another column make sure to specify the field configuration option.

Searching

If you want to find a record using its slug, a custom finder is provided by the plugin.

// src/Controller/ExamplesController.php
$example = $this->Examples->find('slugged', slug: $slug);

Configuration

Slug comes with the following configuration options:

Sluggers

The plugin contains two sluggers:

CakeSlugger

The CakeSlugger uses \Cake\Utility\Text::slug() to generate slugs. In the behavior config you can set the slugger key as shown below to pass options to the $options arguments of Text::slug().

'slugger' => [
    'className' => \Muffin\Slug\Slugger\CakeSlugger::class,
    'transliteratorId' => '<A valid ICU Transliterator ID here>'
]

ConcurSlugger

The ConcurSlugger uses concur/slugify to generate slugs. You can use config array similar to the one shown above to pass options to Cocur\Slugify\Slugify's constructor.

Patches & Features

To ensure your PRs are considered for upstream, you MUST follow the CakePHP coding standards.

Bugs & Feedback

http://github.com/usemuffin/slug/issues

License

Copyright (c) 2015-Present, Use Muffin and licensed under The MIT License.