Контроллеры

Комментарии: 0  Просмотры: 8 780

Контроллер — это файл с классом, который является прослойкой между Моделью и Видом в приложении. Он передает информацию в Модель, когда нужно изменить данные и запрашивает информацию из Модели, когда нужно получить данные. Контроллеры затем передают информацию, полученную из Модели, в Вид, где конечный результат показывается пользователю. Контроллеры, по сути, управляют распределением информации в приложении.
Контроллеры вызываются через метод Request::execute(), основанный на маршруте (Route). Не забудьте прочитать про маршрутизацию (routing), чтобы понять, как использовать маршруты для запуска соответствующих контроллеров.

Создание контроллеров

Для того, чтобы контроллер работал, нужно, чтобы соблюдались следующие условия:

  • Он должен располагаться в директории classes/controller (или поддиректории)
  • Название файла должно быть в нижнем регистре, например articles.php
  • Название класса должно быть сопоставимо с путем до файла (если заменить / на _) и каждое слово должно быть написано с большой буквы
  • Каждый класс контроллера должен иметь класс — родителя

Некоторые примеры названий контроллеров и расположения файлов:

// classes/controller/foobar.php
class Controller_Foobar extends Controller {
 
// classes/controller/admin.php
class Controller_Admin extends Controller {

Контроллеры могут находиться в поддиректориях:

// classes/controller/baz/bar.php
class Controller_Baz_Bar extends Controller {
 
// classes/controller/product/category.php
class Controller_Product_Category extends Controller {
Обратите внимание, что контроллеры в поддиректориях не могут быть вызваны через роут по умолчанию, вам необходимо определить в роуте параметр directory или задать значение по умолчанию для директории.

Контроллеры могут расширять другие контроллеры

// classes/controller/users.php
class Controller_Users extends Controller_Template
 
// classes/controller/api.php
class Controller_Api extends Controller_REST
Controller_Template — образец контроллера, предоставленный фреймворком Kohana.

У вас также может быть контроллер, наследующий другой контроллер, с требованием, например, быть авторизованным.

// classes/controller/admin.php
class Controller_Admin extends Controller {
    // This controller would have a before() that checks if the user is logged in
 
// classes/controller/admin/plugins.php
class Controller_Admin_Plugins extends Controller_Admin {
    // Because this controller extends Controller_Admin, it would have the same logged in check

$this->request

Для работы с обращением (Request) иcпользуется класс Request. Из контроллера текущее обращение доступно как $this->request. Вы можете также сгенерировать ответ через $this->response->body($ouput).




Оставить комментарий или два

Пожалуйста, зарегистрируйтесь для комментирования.