HTTPS SSH

CodeIgniter Slug Library

This library is designed to help you generate friendly uri strings for your content stored in the database.

For example if you have a blog post table then you would want uri strings such as: mysite.com/post/my-post-title

The problem with this is each post needs a unique uri string and this library is designed to handle that for you.

So if you add another with the same uri or title it would convert it to: mysite.com/post/my-post-title-2

Requirements

  • CodeIgniter
  • Some form of database supported by active record

Usage

Here is an example setup:

Please note that these fields map to your database table fields.

$config = array(
    'field' => 'uri',
    'title' => 'title',
    'table' => 'mytable,
    'id' => 'id',
);
$this->load->library('slug', $config);

Adding and Editing Records:

When creating a uri for adding to the database you will use something like this:

$data = array(
    'title' => 'My Test',
);
$data['uri'] = $this->slug->create_uri($data);
$this->db->insert('mytable, $data);

Then for editing: (Notice the create_uri uses the second param to compare against other fields).

$id = 1;
$data = array(
    'title' => 'My Test',
);
$data['uri'] = $this->slug->create_uri($data, $id);
$this->db->where('id', $id);
$this->db->update('mytable', $data);

Methods

__construct($config = array())

Setup the library with your config options.

$config = array(
    'table' => 'mytable,
    'id' => 'id',
    'field' => 'uri',
    'title' => 'title',
    'replacement' => 'dash' // Either dash or underscore
);
$this->load->library('slug', $config);

set_config($config = array())

Pass an array of config vars that will override setup

Paramaters

  • $config - (required) - Array of config options
$config = array(
    'table' => 'mytable,
    'id' => 'id',
    'field' => 'uri',
    'title' => 'title',
    'replacement' => 'dash' // Either dash or underscore
);
$this->slug->set_config($config);

create_uri($data = '', $id = '')

Creates the actual uri string and in the background validates against the table to ensure it is unique.

Paramaters

  • $data - (requied) Array of data
  • $id - (optional) Id of current record
$data = array(
    'title' => 'My Test',
);
$this->slug->create_uri($data)
$data = array(
    'title' => 'My Test',
);
$this->slug->create_uri($data, 1)

This returns a string of the new uri.