Навигация keyboard_arrow_down

Блог Rss rss_feed

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

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

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!

Скачать пример модуля

Был ли этот пост полезен для вас?

    
На данный момент комментариев нет
close

Checkout

close

Избранное