понедельник, 26 декабря 2011 г.

Маршрутизация

RC изпользует модуль apache mod_rewrite и файл .htaccess
Маршрутизацию обеспечивает главный контроллер - front controller
Настройка маршрутизации находится в файле config/routes.php
Зпуск главного контроллера
$front = new frontController($role);
$front->run();

$role - опционально, роль юзера, по умолчанию 'guest'
Главный контроллер
function run() {
  //Запустить соотв. контроллер 
  $this->runControllers();
  //Отобразить главный шаблон (здесь исп. шаблон 'main')
  $this->display('main');
}

onRunController($conroller, $method, &$params, $allow_users, &$continue)
Событие выполняющееся перед запуском контроллера
$conroller - название контроллера
$method - запускаемый метод
$params - передаваемые параметры
$allow_users - разрешенно юзерам - список (массив) ролей
$continue - запускать ли контроллер
Файл настроек
Индекс явлеется регулярным выражением
$routes['route/<:num>/([0-9]+)'] = 'controller.method.x=y'
Пддерживаются следующие параметры <:num> - номер <:string> - строка (без спецсимволов) <:text> - строка
Значение: контроллер.метод.индекс=значение ....

Параметры передаваемые контролеру:
числовой индекс (0,1,2,3,4,5) - Regex mathes
  строковой индекс — (q=qwerty.x=y) — пары значений разделённые символами (.)
Маршруты по умолчанию
$routes['@default']: если пустой URL маршрут
$routes['@error']: путь не найден
$routes['@denied']: доступ юзеру запрещён

Доступ
по умолчанию: доступ для всех юзеров (или .allow=*)
.allow=user: доступ только юзеру с ролью «user,» иначе перенаправить на $routes['@denied']

Пример:
$routes['main/admin'] =
'admin.index.module=admin.url=/main/admin.allow=admin.param_x=xxx';

$routes['orders/edit/<:num>'] =
'orders.edit.module=orders.url=/orders/edit/.allow=user';

Комментариев нет:

Отправить комментарий