Wallogit.com
2017 © Pedro Peláez
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)