This module allows you to make usefull and beautifull URLs for your service.
This module allows you to make useful and beautiful URLs for your service., (*1)
You don't need more /user/<id>
or /article/<id>
cursors in routes. Now you can use simply /donald
and /victory
or /pokemon-go
like addresses for different resources., (*2)
Article describing this HMVC feature placed on our website https://ifmo.su/alias-system., (*3)
Firstly you need to copy this module to your project. You can download this repository and place its files to the /modules
directory or attach it as a submodule., (*4)
git submodule add https://github.com/codex-team/kohana-aliases modules/aliases
To enable module push it to Kohana::modules()
array in bootstrap.php
, (*5)
Kohana::modules(array( 'aliases' => MODPATH . 'aliases', // Aliases for URLs ... ));
In classes
directory create a subdirectory Aliases
with file Controller.php
. You can copy classes/Kohana/Aliases/Controller.php., (*6)
Create constants for your site's entities and add them to Controllers map., (*7)
const ARTICLE = 1; const USER = 2; ... const MAP = array( self::ARTICLE => 'Articles', self::USER => 'Users', ... );
It means that entity ARTICLE
will be handled by controller with name Articles
., (*8)
Aliases module suggest you two types of subcontrollers:, (*9)
Index
for showing entitiesModify
for do anything else with themIf you have entity User
, then create two controllers, (*10)
/alice
or /bob
:Controller/Users/Index.php
with action action_show
, (*11)
/my-great-article/edit
or /not-a-good-user/ban
Controller/Users/Modify.php
with all other actions e.g. action_edit
, action_ban
, action_delete
., (*12)
All you need after is to include aliases creation and updating methods into your logic., (*13)
If you want to set up system routes for your site or block some which shouldn't be allowed to use as alias. Then use config/system-aliases.php file. Lock any count of system URIs by adding them to the array., (*14)
Migrations for Aliases table in MySQL database migrations are in the migrations/Aliases.sql file., (*15)
$alias = Model_Aliases::generateUri($uri); $resource_type = Aliases_Controller::ARTICLE; // your own resource's type such as user, article, category and other $resource_id = 12345; $article->uri = Model_Aliases::addAlias($alias, $resource_type, $resource_id);
$resource_id = $article->id; $old_uri = $article->uri; $new_uri = Model_Aliases::generateUri($uri); $resource_type = Aliases_Controller::ARTICLE; $article->uri = Model_Aliases::updateAlias($old_uri, $new_uri, $resource_type, $resource_id);
$hash = Model_Aliases::createRawHash($route); Model_Aliases::deleteAlias($hash);
You can create a Model_DB_Aliases
class and create your own function to work with database e.g. for use caching system., (*16)
Copy file classes/Model/DB/Aliases.php and rewrite functions., (*17)
https://github.com/codex-team/kohana-aliases/, (*18)
We are small team of Web-developing fans consisting of IFMO students and graduates located in St. Petersburg, Russia. Feel free to give us a feedback on team@ifmo.su, (*19)