cmsx/controller
Composer 安装命令:
composer require cmsx/controller
包简介
CMSx Controller component
README 文档
README
Роутинг
Чтобы адресация контроллеров и обработка ошибок работала, необходимо организовать единую точку входа в приложение.
$r = new \CMSx\Router; //Создаем объект Router
$r->setControllersPath('/path/to/controllers/'); //Указываем путь к папке с контроллерами
$r->process(); //Включаем обработку запросов
При разработке приложения, полезно видеть дополнительную информацию об ошибках и подробности возникновения Exception'ов. Для этого предусмотрен режим отладки, включаемый с помощью enableDebug($on = true). В режиме отладки расширенная информация об Exception'е указывается в тексте страницы ошибки.
Если нужно реализовать свой дизайн для страниц ошибок, можно отнаследоваваться от класса Page, и переопределить метод Router'a getErrorPage(), чтобы он возвращал нужный объект. При возникновении ошибки, к объекту Page добавляется свойство 'exception', содержащее объект выброшенного исключения.
Именование контроллеров
В системе установлены соглашения на именование контроллеров и действий (action).
По-умолчанию, для главной страницы вызывается defaultController->indexAction().
Если указан один аргумент /some/, при наличии контроллера someController в нем будет вызван indexAction(). Если такого контроллера нет, система попытается вызвать defaultController->someAction()
Для URL /some/work/ будет предпринята попытка вызвать someController->workAction().
Если по первому аргументу контроллер не будет найден, система попробует вызвать defaultController->someAction(). Если и это не получится, будет возвращена 404 ошибка.
Если контроллер найден, но такого метода не существует, система также выдаст ошибку. Чтобы обрабатывать динамические адреса, в контроллере можно реализовать функцию __call(), внутри которой определять логику работы с данным адресом.
Работа контроллера
Если контроллер наследует базовый класс CMSx\Controller, в нем доступны свойства:
$this->url- Объект URL содержащий текущий адрес;$this->controller- имя контроллера, без суффикса "Controller";$this->action- имя действия, без суффикса "Action".
Для стандартных ошибок предусмотрены методы, выбрасывающие CMSx\Controller\Exception:
NotFound($msg = null)- Страница не найдена;Unauthorized($msg = null)- Доступ без авторизации запрещен;Forbidden($msg = null)- Доступ запрещен;Unavailable($msg = null)- Сервис недоступен;ServerError($msg = null)- Ошибка сервера;
$msg - может быть указано произвольное уточняющее сообщение, которое отображается только при включенном режиме отладки, см.секцию Роутинг.
Для перенаправления пользователя предусмотрены методы:
Redirect($url, $permanent = false)- перенаправление на заданный $url.Back()- возврат на адрес, откуда пользователь пришел на страницу. Оба метода также выбрасывают CMSx\Controller\Exception, обрабатываемый на уровне Router`a.
Контроллер после выполнения должен вернуть строку, число или объект, который можно привести к строке (реализован метод __toString()). Если контроллер вернул null или false, ничего выведено не будет.
В рамках CMSx Framework контроллер обычно возвращает объект Page или Template.
统计信息
- 总下载量: 31
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2012-12-27