aberdnikov / meerkat-route

Route module for MeerkatCMF

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Модуль управления роутами для MeerkatCMF (on Kohana 3.3)

Модуль предназначен для того, чтобы делать правильный урл

"/news/123/edit/"
"/<controller>/<id>/<action>/"

вместо рекомендуемых дефолтных Kohana


Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
    'controller' => 'welcome',
    'action'     => 'index',
));

Помните, как это было у Артемия Лебедева: http://www.artlebedev.ru/kovodstvo/sections/48/

Правило: посетитель всегда должен получить осмысленное и предсказуемое содержимое, если он стер часть адреса до ближайшей косой черты.

А что будет, если последовать этому правилу в урл /admin/news/edit/123 ?

Понятно, что надо редактировать, понятно, что новость, но какую?

С использованием же этого модуля все будет логично:

Пример использования


Meerkat\Base\Route::factory('/admin/news')
->controller('News')
->directory('Admin')
->with_item(true)
->put();

Создаст роуты

Действие URL Param Controller:action
Показать все новости /admin/news/ Controller_Admin_News::action_index
Показать одну новость /admin/news/123 Request::current()->param('id') Controller_Admin_News::action_item
Добавить новость /admin/news/add Controller_Admin_News::action_add
Редактировать новость /admin/news/123/edit Request::current()->param('id') Controller_Admin_News::action_edit
Удалить новость /admin/news/123/delete Request::current()->param('id') Controller_Admin_News::action_delete
Если есть необходимость использовать ЧПУ, то параметром метода ->with_item() надо передать соответствующее регулярное выражение, например

Meerkat\Base\Route::factory('/admin/news')
->controller('News')
->directory('Admin')
->with_item('([a-z-_0-9]+)')
->put();
Создаст роуты
Действие URL Param Controller:action
Показать все новости /admin/news/ Controller_Admin_News::action_index
Показать одну новость /admin/news/putin-v-kremle Request::current()->param('id') Controller_Admin_News::action_item
Добавить новость /admin/news/add Controller_Admin_News::action_add
Редактировать новость /admin/news/putin-v-kremle/edit Request::current()->param('id') Controller_Admin_News::action_edit
Удалить новость /admin/news/putin-v-kremle/delete Request::current()->param('id') Controller_Admin_News::action_delete

About

Route module for MeerkatCMF

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:PHP 100.0%