Giter VIP home page Giter VIP logo

slug's Introduction

Slug

Build Status Coverage Total Downloads License

Slugging for CakePHP 3.x

Requirements

  • CakePHP 3.0+

Installation

Using Composer:

composer require muffin/slug:~1.0

To make your application load the plugin either run:

./bin/cake plugin load Muffin/Slug

or add the following line to config/bootstrap.php:

Plugin::load('Muffin/Slug');

Usage

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

public function initialize(array $config)
{
  //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 it's 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:

  • field: name of the field (column) to hold the slug. Defaults to slug.
  • displayField: name of the field(s) to build the slug from. Defaults to the \Cake\ORM\Table::displayField().
  • separator: defaults to -.
  • replacements: hash of characters (or strings) to custom replace before generating the slug.
  • maxLength: maximum length of a slug. Defaults to the field's limit as defined in the schema (when possible). Otherwise, no limit.
  • slugger: class that implements the Muffin\Slug\SlugInterface. Defaults to Muffin\Slug\Slugger\CakeSlugger.
  • unique:: tells if slugs should be unique. Set this to a callable if you want to customize how unique slugs are generated. Defaults to true.
  • scope: extra conditions used when checking a slug for uniqueness.
  • implementedEvents: events this behavior listens to.
  • implementedFinders: custom finders implemented by this behavior.
  • implementedMethods: mixin methods directly accessible from the table.
  • onUpdate: Boolean indicating whether slug should be updated when updating record, defaults to false.

Patches & Features

  • Fork
  • Mod, fix
  • Test - this is important, so it's not unintentionally broken
  • Commit - do not mess with license, todo, version, etc. (if you do change any, bump them into commits of their own that I can ignore when I pull)
  • Pull request - bonus point for topic branches

To ensure your PRs are considered for upstream, you MUST follow the CakePHP coding standards. A pre-commit hook has been included to automatically run the code sniffs for you:

ln -s ../../contrib/pre-commit .git/hooks/.

Bugs & Feedback

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

Credits

This was originally inspired by @dereuromark's SluggedBehavior.

License

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

slug's People

Contributors

admad avatar jadb avatar davidyell avatar phillaf avatar bravo-kernel avatar

Watchers

José Lorenzo Rodríguez avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.