Сообщение об ошибке

  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).

Контроллеры в PrestaShop 1.5

test

Контроллеры в PrestaShop

Предисловие

Сейчас мы рассмотрим Контроллеры в архитектуре PrestaShop, чтобы еще больше разложить по полочкам понимания работы самой PrestaShop. Это сильно поможет нам в дальнейшем не делать лишних действий, покажет нам где брать образцы кода для собственных модулей и покажет что и как работает. Дальше, текст в большей мере представляет перевод официальной документации PrestaShop, который может быть найден тут.

В MVC архитектуре, контроллер управляет синхронизацией данных между Представлением(View) и Моделью(Model). Контроллеры обрабатывают все события и триггеры событий вызываемые пользователем.
Если нужно чтобы какие-то данные были изменены, Контроллер говорит об этом Модели, и передает данные запрошенные/возвращенные из Модели в Представление.
Все контроллеры в PrestaShop могут быть перекрыты классами контроллеров которые наследуют класс-родитель, например AdminController, ModuleAdminController, FrontController или же ModuleFrontController.

Класс FrontController

Некоторые свойства класса:
$template - Имя шаблона для содержимого страницы.
$css_files - Массив со списком CSS файлов.
$js_files - Массив со списком JavaScript файлов.
$errors - Массив содержащий вывод об ошибках.
$guestAllowed - Может ли не авторизованный пользователь иметь доступ к странице
$initialized - Вызывалась ли функция init()
$iso - ISO код текущего выбранного языка.
$n - Количество элементов на страницу.
$orderBy - Выбранное поле для сортировки.
$orderWay - Направление сортировки по полю во возрастанию или убыванию ("ASC" или "DESC").
$p - Текущий номер страницы.
$ajax - Если есть ajax параметры в запросе, этот флаг устанавливается в true(Истина).

Порядок вызова функций контроллера:

__contruct(): Установка параметров контроллера по умолчанию
init(): инициализация(вызов) контроллера.
setMedia() или setMobileMedia(): Добавляет все JavaScript и CSS определенные для данной страницы, они могут быть совмещены, сжаты и закешированы(Смотрите PrestaShop's CCC утилиты, на вкладке админки "Performance"(Производительность), в "Advanced preferences"(Продвинутые настройки).
postProcess(): обрабатывает ajaxProcess.
initHeader(): Вызывается до initContent().
initContent(): Запускает обработку контента
initFooter(): вызывается после initContent().
display() или displayAjax(): Выводит содержимое

Существующие контроллеры

AddressController.php - Используется address.php для редактирования адреса клиента
AddressesController.php - Используется addresses.php чтобы получить адреса клиентов.
AuthController.php - Используется authentication.php для авторизации клиента.
BestSalesController.php - Используется best-sales.php для получения лучших продавцов.
CartController.php - Используется в cart.php для управления клиентской корзиной.
CategoryController.php - Используется в category.php для получения категорий продуктов.
CMSController.php - Используется в cms.php для получения страниц CMS.
CompareController.php - Используется в products-comparison.php для сравнения продуктов.
ContactController.php - Используется в contact-form.php для отправки сообщений.
DiscountController.php - Используется в discount.php для получения клиентских ваучеров.
GuestTrackingController.php - Используется в guest-tracking.php, для управления заказами гостей.
HistoryController.php - Используется в history.php, для получения истории заказов клиентов.
IdentityController.php - Используется в identity.php для получения персональной информации клиента.
IndexController.php - Используется в index.php, для отображения главной страницы.
ManufacturerController.php - Используется в manufacturer.php для получения информации о производителе.
MyAccountController.php - Используется в my-account.php, для управления аккаунтом клиента.
NewProductsController.php - Используется в new-products.php, для получения списка новых продуктов.
OrderConfirmationController.php - Используется в order-confirmation.php для подтверждения заказа.
OrderController.php - Используется в order.php для управления пяти-ступенчатым оформлением заказа.
OrderDetailController.php - Используется в order-detail.php для получения заказа клиента.
OrderFollowController.php - Используется в order-follow.php для получения клиентских возвратов.
OrderOpcController.php - Используется в order-opc.php для управления одноступенчатым оформлением заказа.
OrderReturnController.php - Используется в order-return.php для получения возврата клиента.
OrderSlipController.php - Используется в order-slip.php для получения кредитных промахов клиента.
PageNotFoundController.php - используется в 404.php для управления страницей 404 "Page not found".
ParentOrderController.php - Управляет общедоступным кодом заказа.
PasswordController.php - Используется в password.php для сброса забытого пароля.
PricesDropController.php - Используется в prices-drop.php чтобы получить товары со скидкой
ProductController.php - Используется в product.php для получения товара.
SearchController.php - Используется в search.php для получения результатов поиска.
SitemapController.php - Используется в sitemap.php для генерации sitemap.
StoresController.php - Используется в stores.php для получения информации об магазине.
SupplierController.php - Используется в supplier.php, для получения поставщиков.

Перекрытие/Перезапись контроллера.

Благодаря наследованию объектов, вы можете изменить поведение контроллера, или добавлять новые функции в него.
Контроллеры PrestaShop хранятся в папке /controllers, а также используют суффикс "Core".
Например при работе с контроллером категорий:
Файл: /controllers/CategoryController.php
Класс: CategoryControllerCore
Для перекрытия контроллера, вам нужно сначала создать класс без суффикса "Core", и поместить его в папку /override/controllers .
Перекрывая контроллер создаем:
Файл: /override/controllers/front/CategoryController.php
Класс: CategoryController

Категория: 
Share/Save

Делитесь с друзьями в социальных сетях! Оставляйте комментарии!

Share/Save

Это Вам так же может быть интересно!