Стандартный запрос CakePHP
Мы рассмотрели основные составляющие CakePHP, давайте теперь посмотрим, как каждый ингредиент взаимодействует с системой чтобы выполнить самый базовый запрос. А рассматривать будем, продолжая простой пример, когда пользователь Иван нажимает на ссылку Buy A Custom Cake Now!, которая ведет на страницу, генерируемую CakePHP.

Изображение 2: Типичный запрос CakePHP
-  Черный — обязательные элементы
-  Серый — не обязательные
-  Голубой — функции обратного вызова
-  Иван нажал на ссылку  http://www.example.com/cakes/buy, и его браузер делает запрос к серверу. http://www.example.com/cakes/buy, и его браузер делает запрос к серверу.
-  Маршрутизатор (будем иногда так называть Роуты) разбивает адрес на части, выявляя Контроллер, действие и прочие элементы, которые могут повлиять на бизнес-логику.
-  Используя Роут запрос браузера переадресуется к действию Контроллера (на самом деле это просто метод в классе Контроллера). В этом случае это метод buy() класса CakesController. Но до того как выполнить метод buy(), обязательно выполнится функция обратного вызова beforeFilter(), объявленная в этом классе.
-  Контроллер воспользуется Моделью для получения данных (как правило из базы данных). В данном случае Модель используется для того, чтобы получить из базы данных информацию о последней покупке Ивана. Любые объявленные функции обратного вызова, Поведения и базы данных могут использоваться для выполнения этого запроса. Хотя в другом случае Модель может и не понадобиться, но CakePHP требует чтобы для каждого контроллера была объявлена Модель.
-  После получения данных, они возвращаются в Контроллер. При этом выполняются функции обратного вызова Модели.
-  Контроллер может использовать Компоненты для уточнения данных и выполнять другие операции (манипулировать сессиями, аутентификацией, или, например, отправлять сообщения по электронной почте).
-  Когда Контроллер при помощи Модели и Компонентов выполнил все необходимые операции, он может передать полученные данные в Отображение при помощи функции set(). Функции обратного вызова применяются до отправки информации в Отображение. Выполняется логика Отображения, при этом могут использоваться Элементы и/или Помощники. По умолчанию результат отображения выводится в Разметке.
-  При этом могут быть применены функции обратного вызова (afterFilter()). Полностью собранная страница отправляется в браузер Ивана.
<< Файловая структура | Соглашения >>