-
Notifications
You must be signed in to change notification settings - Fork 39
Router
Реализация маршрутизации, для организации ЧПУ.
На данный момент нет. Исходя из идеологии юзабилити кода, надо бы сформировать требования к настройкам и использовании роутов.
Есть возможность получении информации о всех роутах в одном месте (на данный момент это модуль /routers/), что позволяет отслеживать конфликты (в ручном режиме), и быстро сооринтироваться по кастомному УРЛ в какой модуль нужно идти.
Плюс, в sekeleton'е в режиме отладки отправляется заголовок Bluz-Debug
который в явном виде передаёт информацию о модуле и контроллере.
Без дополнительных махинаций всё работает по уже привычной для многих схеме /module/controller/key1/value1/key2/value2
.
Теперь можно прокачать каждый контроллер по отдельности:
/**
* I. static route
* @route /login/
*
* II. regexp route with integer params mapping
* @route /users/{$id}
* @param integer $id
*
* III. regexp route with string params mapping
* @route /{$alias}.html
* @param string $alias
*/
При построение маршрутов никаких дополнительных махинаций не требуется (!!!):
$this->url('users', 'login');
$this->url('users', 'profile', array('id' => $id));
$this->url('pages', 'show', array('name' => $name));
- Если указать несколько маршрутов в описании контроллера, то все они будут вести к контроллеру, но только последний будет использовать для построения ссылок.
- Статические маршруты без использования переменных имеют приоритет, таким образом можно организовать работу двух следующих маршрутов без конфликтов:
/**
* @route /my-static-page.html
*/
/**
* @route /{$alias}.html
*/
- Если вы используете переменные в маршруте то в обязательном порядке необходимо их ловить как параметр функции.
- Не все возможные варианты покрывает текущая реализация, думаю процентов 90%, и workaround'ов пока не придумано
- В обязательном порядке необходимо кешировать карту роутов (и кешируется пакетом Cache), иначе сильно просядет производительность, следовательно надо за ним следить (надо бы добавить принудительное обновление кеша роутов)
Acl
Application
Auth
Cache
Common
— Exception
— Collection
— Container
— Helper
— Options
— Singleton
Config
Controller
— Data
— Mapper
—— Crud
—— Rest
— Reflection
Crud
— Crud Table
Db
— Row
— Table
— Relations
— Query
Debug
EventManager
Grid
Http
Layout
Logger
Mailer
Messages
Nil
Proxy
Registry
Request
Response
Router
Session
Translator
Validator
View