Поиск…


Замена аргумента

<!-- <moduleDir>/etc/<area>/di.xml -->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<!-- ... -->
    <type name="Vendor\Namespace\Model\SomeClass">
        <arguments>
            <argument name="object" xsi:type="object">Vendor\Namespace\Model\SomeOtherClass</argument>
        </arguments>
    </type>
</config>

Предпочтение класса

<!-- <moduleDir>/etc/<area>/di.xml -->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<!-- ... -->
    <preference
        for="Vendor\Namespace\Model\Example"
        type="Vendor\Namespace\Model\AnotherExample" />
<!-- ... -->
</config>

Выше пример - синтаксис переопределенной базовой модели.

Вот список пунктов, которые расскажут вам, как сделать это возможным.

  1. moduleDir - Каталог расширения. Например, расширение для app/code/custom/extension extension - это ваш каталог, в котором будут размещены все необходимые папки расширения.

  2. area - area будет frontend или adminhtml

    • frontend - если расширение будет использовать функциональность frontend, чем di.xml будет di.xml в эту папку

    • adminhtml - если расширение будет использовать функциональные возможности di.xml чем di.xml пойдет в эту папку

    • поэтому он будет app/code/custom/extension/etc/frontend/di.xml или app/code/custom/extension/etc/adminhtml/di.xml

    • Если вы хотите использовать обе функциональные возможности, чем файл di.xml будет напрямую в папке etc di.xml не нужно adminhtml папку frontend или adminhtml . Например: app/code/custom/extension/etc/di.xml

  3. for = "Vendor \ Namespace \ Model \ Example" здесь, путь к файлу, который переопределит функциональность нужной функции.

  4. type = "Vendor \ Namespace \ Model \ AnotherExample" здесь, путь к файлу, который будет предоставлять функции, которые будут переопределяться по step - 3

Инъекция конструктора

/**
 * @var \Vendor\Module\Helper\Data
 */
protected $customHelper;

/**
 * Constructor call
 * @param \Vendor\Module\Helper\Data $customHelper
 */
public function __construct(
    \Vendor\Module\Helper\Data $customHelper
)
{
    $this->customHelper = $customHelper;
    parent::__construct();
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow