magento2
Inyección de dependencia
Buscar..
Reemplazo de Argumento
<!-- <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>
Preferencia de clase
<!-- <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>
El Ejemplo anterior es una sintaxis del modelo central de anulación.
Aquí hay una lista de puntos que le describirán cómo hacerlo posible.
moduleDir - Directorio de extensión Al igual que
app/code/custom/extension
aquíextension
es el directorio en el que se ubicarán todas las carpetas de extensión necesarias.area - area será
frontend
oadminhtml
frontend - si la extensión usará la funcionalidad de frontend que
di.xml
va adi.xml
en esta carpetaadminhtml - si la extensión utilizará la funcionalidad de adminpanel que
di.xml
irá a esta carpetaasí que será
app/code/custom/extension/etc/frontend/di.xml
oapp/code/custom/extension/etc/adminhtml/di.xml
Si desea utilizar tanto la funcionalidad como el archivo
di.xml
, irá directo a la carpeta,etc
no es necesario colocarlo en la carpetafrontend
oadminhtml
. Me gusta -app/code/custom/extension/etc/di.xml
for = "Vendor \ Namespace \ Model \ Example" aquí, la ruta del archivo que anulará la funcionalidad de la función deseada.
type = "Vendor \ Namespace \ Model \ AnotherExample" aquí, la ruta del archivo que proporciona funciones que se anularán en el
step - 3
Inyección Constructor
/**
* @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();
}