Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Create a human readable url for your Yii model records
PHP
branch: master

This branch is 6 commits ahead of mintao:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
tests
.gitignore
Doctrine_Inflector.php
LICENSE
README.md
SluggableBehavior.php
composer.json
composer.lock

README.md

What's it all about?

With this behavior, you can generate an URI for a single or combination of columns in your table. Some call it permalink, others call it slug or human readable url.

Check out the latest version at: github.com/elvenpath/yii-behavior-sluggable

Imagine a blog table

| id | category | title                             |
|----+----------+-----------------------------------|
|  1 | security | NASA Server hacked by hacker kids |
| ...

So you'd like a better URL than that?

http://your-blog.org/index.php?r=blog/show&id=1422

What about

http://your-blog.org/security/nasa-server-hacked-by-hacker-kids

Google will love you ;)

How to get it done

  • Add another column called "slug" to your table
  • Download this extension and drop it into your protected/extensions folder,
  • Add the behavior to your model (shown below)

If you're using git, I'd recommend:

cd <YOUR YII-PROJECT>
mkdir -p protected/extensions/behaviors (optional)
git submodule add git://github.com/elvenpath/yii-behavior-sluggable.git protected/extensions/behaviors/SluggableBehavior

Demo configuration of this behavior for your model

/**
 * Behaviors for this model
 */
public function behaviors(){
  return array(
    'sluggable' => array(
      'class'=>'ext.behaviors.SluggableBehavior.SluggableBehavior',
      'columns' => array('category', 'title', 'author.name'),
      'unique' => true,
      'scopeColumn' => 'language_id',
      'update' => true,
    ),
  );
}
  • class Defines the path where to find the SluggableBehavor.php
  • columns Needs to be an array of the fields to use for slug creation
  • unique Set this to true to ensure a unique slug (Numbers will be added to duplicate slugs, if already existing)
  • update Set this to true is every time you change the entry, the slug should be updated too. Set it to false, if the slug should be only created once
  • scopeColumn The scope of the slug uniquness.

Download this extension (and fork it):

github.com/elvenpath/yii-behavior-sluggable

Changelog

  • 2014-03-20 Added scopeColumn functionality
  • 2011-04-30 Added update functionality
  • 2011-06-23 Added support for dependent models (see demo configuration, author.name)
Something went wrong with that request. Please try again.