Создание пользовательских форм в бэкэнде Magento 2: подробное руководство

Magento 2 предоставляет надежную внутреннюю среду, которая позволяет разработчикам создавать собственные формы для различных административных задач. В этой статье мы рассмотрим различные методы и приемы создания пользовательских форм в бэкэнде Magento 2. Мы углубимся в примеры кода и объясним каждый шаг в разговорной форме, чтобы вам было легче следовать инструкциям. Итак, начнём!

Метод 1: использование компонентов пользовательского интерфейса
Magento 2 предоставляет мощную структуру компонентов пользовательского интерфейса, которая упрощает процесс создания форм. Вот пример создания пользовательской формы с использованием компонентов пользовательского интерфейса:

<!-- app/code/Vendor/Module/view/adminhtml/ui_component/custom_form.xml -->
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <fieldset name="general">
        <field name="title" formElement="input">
            <settings>
                <label translate="true">Title</label>
                <dataType>text</dataType>
                <dataScope>title</dataScope>
            </settings>
        </field>
        <!-- Add more fields here -->
    </fieldset>
</form>

Метод 2: создание пользовательских контроллеров и действий
Другой подход к созданию пользовательских форм в бэкэнде Magento 2 — создание пользовательских контроллеров и действий. Вот пример того, как этого можно добиться:

// app/code/Vendor/Module/Controller/Adminhtml/CustomForm/Index.php
namespace Vendor\Module\Controller\Adminhtml\CustomForm;
use Magento\Backend\App\Action;
use Magento\Framework\View\Result\PageFactory;
class Index extends Action
{
    protected $resultPageFactory;
    public function __construct(Action\Context $context, PageFactory $resultPageFactory)
    {
        parent::__construct($context);
        $this->resultPageFactory = $resultPageFactory;
    }
    public function execute()
    {
        $resultPage = $this->resultPageFactory->create();
        $resultPage->getConfig()->getTitle()->prepend(__('Custom Form'));
        return $resultPage;
    }
}

Метод 3: использование поставщиков данных
Magento 2 также позволяет использовать поставщиков данных для заполнения ваших пользовательских форм данными. Вот пример:

// app/code/Vendor/Module/Model/DataProvider.php
namespace Vendor\Module\Model;
use Magento\Ui\DataProvider\AbstractDataProvider;
use Vendor\Module\Model\ResourceModel\CustomModel\CollectionFactory;
class DataProvider extends AbstractDataProvider
{
    protected $collection;
    public function __construct(
        $name,
        $primaryFieldName,
        $requestFieldName,
        CollectionFactory $collectionFactory,
        array $meta = [],
        array $data = []
    ) {
        $this->collection = $collectionFactory->create();
        parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
    }
    public function getData()
    {
        if (!$this->getCollection()->isLoaded()) {
            $this->getCollection()->load();
        }
        return $this->getCollection()->toArray();
    }
}

В этой статье мы рассмотрели несколько методов создания пользовательских форм в бэкэнде Magento 2. Мы рассмотрели использование компонентов пользовательского интерфейса, создание пользовательских контроллеров и действий, а также использование поставщиков данных. Используя эти методы, вы можете создавать мощные и настраиваемые формы, отвечающие конкретным потребностям вашего бизнеса. Благодаря гибкой внутренней структуре Magento 2 возможности безграничны!