magento2
Afhankelijkheid injectie
Zoeken…
Argumentvervanging
<!-- <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>
Klasse voorkeur
<!-- <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>
Bovenstaand voorbeeld is een syntaxis van het vervangende kernmodel.
Hier is een lijst met punten die u zullen beschrijven hoe u dit mogelijk kunt maken
moduleDir - Extensiemap Zoals
app/code/custom/extension
hier isextension
de directory waarin alle benodigde extensiemappen worden geplaatst.gebied - gebied wordt
frontend
ofadminhtml
frontend - als de extensie de functionaliteit van frontend gebruikt, dan gaat
di.xml
in deze mapadminhtml - als de extensie de functionaliteit van adminpanel gebruikt, dan gaat
di.xml
naar deze mapdus het wordt
app/code/custom/extension/etc/frontend/di.xml
ofapp/code/custom/extension/etc/adminhtml/di.xml
Als zowel de functionaliteit wil gebruiken dan gaat het
di.xml
bestand direct in de mapetc
, het is niet nodig om defrontend
ofadminhtml
map te plaatsen. Vind ik leuk -app/code/custom/extension/etc/di.xml
for = "Vendor \ Namespace \ Model \ Example" hier, het pad van het bestand dat de functionaliteit van de gewenste functie vervangt.
type = "Leverancier \ Naamruimte \ Model \ AnotherExample" hier, het pad van het bestand dat functies biedt die bij
step - 3
overschrijvenstep - 3
Constructor injectie
/**
* @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();
}