Налаштування Magento 2 використовуються Менеджер об'єктів Magento 2 для розширення реалізації за замовчуванням. Ви можете використовувати налаштування в Magento 2 для реалізації деяких інтерфейсів або для переписування/перевизначення існуючих класів PHP та їхніх методів.
У цій статті ви дізнаєтесь, як це зробити, та знайдете корисні приклади, які допоможуть вам на цьому шляху.
Перевизначення класів у Magento 2
Якщо ви хочете переписати існуючі методи класу з налаштуваннями Magento, виконайте наведені нижче дії:
1. Створіть тощо/di.xml файл у вашій папці розширень:
app/code/MyCompany/ModuleName/etc/di.xml
2. Додайте до нього цей код:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Checkout\Block\Onepage\Success" type="MyCompany\ModuleName\Block\Onepage\Success" />
</config>
Використати атрибут "дляу "перевага" для визначення класу PHP, який потрібно перевизначити. Використовуйте атрибут "тип" щоб визначити PHP-клас, який буде використовуватися замість оригінального.
3. Створіть новий PHP-файл:
app/code/MyCompany/ModuleName/Block/Onepage/Success.php
з класом МояКомпанія\НазваМодуля\Блок\ОднаСторінка\Успіх:
<?php
namespace MyCompany\ModuleName\Block\Onepage;
class Success extends \Magento\Checkout\Block\Onepage\Success
{
// new code here
}
3. Збережіть зміни та скомпілюйте впровадження залежностей за допомогою команди CLI:
bin/magento setup:di:compile
Переконайтеся, що команда виконана без помилок.
Важливе зауваження: Переписування існуючих класів не рекомендується, оскільки це часто призводить до конфліктів. Конфлікти часто виникали в Magento 1 і досі відбуваються в Magento 2.
Отже, якщо ви все ще хочете використовувати налаштування Magento 2 для перевизначення класів, вам потрібен , який допоможе вам виявити конфлікти класів.
![]()
Однак, якщо це можливо, ви можете використовувати спостерігачі або плагіни в Magento для зміни логіки існуючих класів замість налаштувань Magento.
Реалізація інтерфейсу
Щоб реалізувати інтерфейс у Magento 2, наприклад, інтерфейс вашого нового репозиторію, вам потрібно:
1. Створіть тощо/di.xml файл у вашому розширенні Magento.
2. Вкажіть Налаштування для Інтерфейс таТип класу, який реалізуватиме інтерфейс, як у прикладі:
<?xml version="1.0"?>
<config>
<preference for="MyCompany\ModuleName\Api\MyEntityRepositoryInterface" type="MyCompany\ModuleName\Model\MyEntityRepository" />
</config>
3. Створити Модель/MyEntityRepository.php з кодом
<?php
namespace MyCompany\ModuleName\Model;
use MyCompany\ModuleName\Api\MyEntityRepositoryInterface;
class MyEntityRepository implements MyEntityRepositoryInterface
{
// class code here
}
4. Збережіть зміни та скомпілюйте впровадження залежностей за допомогою команди CLI:
bin/magento setup:di:compile