2017 © Pedro Peláez
 

library controller

CMSx Controller component

image

cmsx/controller

CMSx Controller component

  • Sunday, March 17, 2013
  • by cmsx
  • Repository
  • 1 Watchers
  • 0 Stars
  • 25 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

Маршрутизация и контроллеры

Роутинг

Чтобы адресация контроллеров и обработка ошибок работала, необходимо организовать единую точку входа в приложение., (*1)

$r = new \CMSx\Router; //Создаем объект Router
$r->setControllersPath('/path/to/controllers/'); //Указываем путь к папке с контроллерами
$r->process(); //Включаем обработку запросов

При разработке приложения, полезно видеть дополнительную информацию об ошибках и подробности возникновения Exception'ов. Для этого предусмотрен режим отладки, включаемый с помощью enableDebug($on = true). В режиме отладки расширенная информация об Exception'е указывается в тексте страницы ошибки., (*2)

Если нужно реализовать свой дизайн для страниц ошибок, можно отнаследоваваться от класса Page, и переопределить метод Router'a getErrorPage(), чтобы он возвращал нужный объект. При возникновении ошибки, к объекту Page добавляется свойство 'exception', содержащее объект выброшенного исключения., (*3)

Именование контроллеров

В системе установлены соглашения на именование контроллеров и действий (action). По-умолчанию, для главной страницы вызывается defaultController->indexAction()., (*4)

Если указан один аргумент /some/, при наличии контроллера someController в нем будет вызван indexAction(). Если такого контроллера нет, система попытается вызвать defaultController->someAction(), (*5)

Для URL /some/work/ будет предпринята попытка вызвать someController->workAction()., (*6)

Если по первому аргументу контроллер не будет найден, система попробует вызвать defaultController->someAction(). Если и это не получится, будет возвращена 404 ошибка., (*7)

Если контроллер найден, но такого метода не существует, система также выдаст ошибку. Чтобы обрабатывать динамические адреса, в контроллере можно реализовать функцию __call(), внутри которой определять логику работы с данным адресом., (*8)

Работа контроллера

Если контроллер наследует базовый класс CMSx\Controller, в нем доступны свойства: * $this->url - Объект URL содержащий текущий адрес; * $this->controller - имя контроллера, без суффикса "Controller"; * $this->action - имя действия, без суффикса "Action"., (*9)

Для стандартных ошибок предусмотрены методы, выбрасывающие CMSx\Controller\Exception: * NotFound($msg = null) - Страница не найдена; * Unauthorized($msg = null) - Доступ без авторизации запрещен; * Forbidden($msg = null) - Доступ запрещен; * Unavailable($msg = null) - Сервис недоступен; * ServerError($msg = null) - Ошибка сервера;, (*10)

$msg - может быть указано произвольное уточняющее сообщение, которое отображается только при включенном режиме отладки, см.секцию Роутинг., (*11)

Для перенаправления пользователя предусмотрены методы: * Redirect($url, $permanent = false) - перенаправление на заданный $url. * Back() - возврат на адрес, откуда пользователь пришел на страницу. Оба метода также выбрасывают CMSx\Controller\Exception, обрабатываемый на уровне Router`a., (*12)

Контроллер после выполнения должен вернуть строку, число или объект, который можно привести к строке (реализован метод __toString()). Если контроллер вернул null или false, ничего выведено не будет., (*13)

В рамках CMSx Framework контроллер обычно возвращает объект Page или Template., (*14)

The Versions

17/03 2013

dev-master

9999999-dev http://cmsx.ru

CMSx Controller component

  Sources   Download

MIT

The Requires