PrestaShop продолжает активно развиваться, делая систему более удобной и функциональной как для пользователей, так и для разработчиков. Одним из значительных нововведений стал новый подход к созданию контроллеров для модулей админ панели, используя Symfony. В этой статье мы рассмотрим, как правильно создать такой контроллер в вашем модуле.
1. Создание структуры контроллера
Для начала создайте новый контроллер в директории вашего модуля. Структура файла должна быть следующей:
namespace MyModule\Controller\Admin;
use PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController;
use Symfony\Component\HttpFoundation\Response;
class MyModuleAdminController extends FrameworkBundleAdminController
{
public function indexAction()
{
return $this->render('@Modules/mymodule/views/templates/admin/index.html.twig');
}
}
Ваш контроллер должен наследовать класс FrameworkBundleAdminController
, который позволяет использовать функции Symfony в PrestaShop.
2. Настройка маршрутов
Чтобы PrestaShop мог обращаться к вашему новому контроллеру, необходимо настроить маршруты. Это делается через файл config/routes.yml
вашего модуля:
mymodule_admin_index:
path: /admin/mymodule
controller: MyModule\Controller\Admin\MyModuleAdminController::indexAction
methods: [GET]
3. Шаблон для контроллера
Создайте шаблон для админ страницы, которая будет отображаться вашим контроллером. Это файл views/templates/admin/index.html.twig
:
{% extends '@PrestaShop/Admin/layout.html.twig' %}
{% block content %}
<h1>Добро пожаловать в админку модуля!</h1>
<p>Здесь вы можете управлять настройками вашего модуля.</p>
{% endblock %}
4. Настройка автозагрузки контроллера
Теперь вам нужно настроить автозагрузку классов для вашего модуля. Для этого необходимо добавить файл composer.json
в корень модуля:
{
"name": "you/your-module",
"description": "Описание вашего модуля",
"autoload": {
"psr-4": {
"PrestaShop\\Modules\\MyModule\\": "src/"
}
},
"config": {
"prepend-autoloader": false
},
"type": "prestashop-module"
}
Разбор настроек:
"name": "you/your-module"
— укажите имя вашего модуля."autoload": { "psr-4": { "PrestaShop\\Modules\\MyModule\\": "src/" }}
— эта часть конфигурации указывает на автозагрузку вашего контроллера, который находится в директорииsrc/Controller/Admin
. PrestaShop будет автоматически загружать классы из этого пространства имен."config": { "prepend-autoloader": false }
— эта строка отключает предустановленный автозагрузчик PrestaShop, чтобы Composer мог управлять автозагрузкой сам.
После того как вы создали файл composer.json
, необходимо сгенерировать автозагрузчик, используя команду Composer:
php composer.phar dump-autoload
Это создаст файл vendor/autoload.php
, который PrestaShop будет использовать для правильной загрузки вашего контроллера.
5. Как протестировать URL для нового контроллера
После того как вы создали новый контроллер для админ панели в вашем модуле, важно убедиться, что маршрут (URL) настроен правильно и работает как положено. Чтобы это сделать, выполните простую проверку.
В зависимости от вашего маршрута, URL для вашего контроллера может выглядеть следующим образом:
https://your-shop.com/admin-dev/index.php/admin/mymodule
Откройте этот URL в браузере и убедитесь, что страница загружается корректно. В нашем примере вы должны увидеть следующий текст:
Добро пожаловать в админку модуля!
Здесь вы можете управлять настройками вашего модуля.
Если страница не загружается, проверьте:
- Настроен ли файл маршрутов вашего модуля в
config/routes.yml
. - Есть ли файл шаблона в нужной директории и нет ли в нем ошибок.
Создание нового контроллера для админ панели в PrestaShop с использованием Symfony дает разработчикам больше гибкости и возможностей для настройки. Не забывайте корректно настраивать автозагрузку через Composer и проверять маршруты вашего модуля.
Оставляйте комментарии, всё ли было понятно, и что вы думаете о новом контроллере для админ панели в PrestaShop!
Скачать пример модуля