Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dmitrymomot/meerkat-route

Модуль управления роутами для MeerkatCMF (on Kohana 3.3)
https://github.com/dmitrymomot/meerkat-route

Last synced: 3 days ago
JSON representation

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

Awesome Lists containing this project

README

        

Модуль управления роутами для 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