Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/codex-team/kohana-aliases
Module which allows you to create beautiful URL's
https://github.com/codex-team/kohana-aliases
aliases beautiful-urls kohana kohana-php-framework
Last synced: 6 days ago
JSON representation
Module which allows you to create beautiful URL's
- Host: GitHub
- URL: https://github.com/codex-team/kohana-aliases
- Owner: codex-team
- License: mit
- Created: 2016-07-14T10:16:36.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-04-17T15:20:37.000Z (over 6 years ago)
- Last Synced: 2024-04-24T08:16:25.856Z (7 months ago)
- Topics: aliases, beautiful-urls, kohana, kohana-php-framework
- Language: PHP
- Homepage: https://ifmo.su/alias-system
- Size: 38.1 KB
- Stars: 8
- Watchers: 4
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Aliases module for Kohana Framework
This module allows you to make useful and beautiful URLs for your service.
You don't need more `/user/` or `/article/` cursors in routes. Now you can use simply `/donald` and `/victory` or `/pokemon-go` like addresses for different resources.
## User Guide
Article describing this HMVC feature placed on our website [https://ifmo.su/alias-system](https://ifmo.su/alias-system).
### Installing
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.
```shell
git submodule add https://github.com/codex-team/kohana-aliases modules/aliases
```To enable module push it to `Kohana::modules()` array in `bootstrap.php`
```php
Kohana::modules(array(
'aliases' => MODPATH . 'aliases', // Aliases for URLs
...
));
```### Defining project's entities
In `classes` directory create a subdirectory `Aliases` with file `Controller.php`. You can copy [classes/Kohana/Aliases/Controller.php](classes/Kohana/Aliases/Controller.php).
Create constants for your site's entities and add them to Controllers map.
```php
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`.
#### Subcontrollers
Aliases module suggest you two types of subcontrollers:
- `Index` for showing entities
- `Modify` for do anything else with them##### Example
If you have entity `User`, then create two controllers
1. To show user by uri `/alice` or `/bob`:
`Controller/Users/Index.php` with action `action_show`
2. To do any editions as adding, deleting. Uri: `/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`.
All you need after is to include aliases creation and updating methods into your logic.
### Set system routes
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](config/system-aliases.php) file. Lock any count of system URIs by adding them to the array.
### Database
Migrations for Aliases table in MySQL database migrations are in the [migrations/Aliases.sql](migrations/Aliases.sql) file.
### Create a new alias
```php
$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);
```### Update alias
```php
$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);
```### Remove alias
```php
$hash = Model_Aliases::createRawHash($route);Model_Aliases::deleteAlias($hash);
```## Database and cache
You can create a `Model_DB_Aliases` class and create your own function to work with database e.g. for use caching system.
Copy file [classes/Model/DB/Aliases.php](classes/Model/DB/Aliases.php) and rewrite functions.
## Repository
https://github.com/codex-team/kohana-aliases/
## About CodeX
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 [email protected]