Контроллер — это файл с классом, который является прослойкой между Моделью и Видом в приложении. Он передает информацию в Модель, когда нужно изменить данные и запрашивает информацию из Модели, когда нужно получить данные. Контроллеры затем передают информацию, полученную из Модели, в Вид, где конечный результат показывается пользователю. Контроллеры, по сути, управляют распределением информации в приложении.
Контроллеры вызываются через метод Request::execute(), основанный на маршруте (Route). Не забудьте прочитать про маршрутизацию (routing), чтобы понять, как использовать маршруты для запуска соответствующих контроллеров.
Создание контроллеров
Для того, чтобы контроллер работал, нужно, чтобы соблюдались следующие условия:
Некоторые примеры названий контроллеров и расположения файлов:
// 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 {
Контроллеры могут расширять другие контроллеры
// classes/controller/users.php class Controller_Users extends Controller_Template // classes/controller/api.php class Controller_Api extends Controller_REST
У вас также может быть контроллер, наследующий другой контроллер, с требованием, например, быть авторизованным.
// 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).
Пожалуйста, зарегистрируйтесь для комментирования.