Overskriv Block, models og Controllers i Magento2
I denne lille guide vil jeg vise jer hvordan i kan overskrive blocks, models samt Controllers i Magento2.
I forbindelse med udvikling af moduler til Magento 2 vil der ofte opstå et behov for at tilføje eller ændre i nogle af de standard funktioner Magento leverer.
For at sikre fremtidige opdateringer skal disse ændringer laves i et modul, så der ikke bliver overskevet nogle af core filerne i systemet.
Er du i tvivl om hvordan et sådan modul laves kan du læse guiden om hvordan laves et modul til Magento
Overskriv Model
I eksemplet her oveskriver vi modellen Magento\Catalog\Model\Product
Først laves filen [Vendor]/[Modul]/etc/di.xml med koden:
<?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\Catalog\Model\Product" type="[Vendor]\[Modul]\Model\Rewrite\Catalog\Product" />
</config>
Opret herefter den nye model / class [Vendor]/[Modul]/Model/Rewrite/Catalog/Product med koden
<?php
namespace [Vendor]\[Modul]\Model\Rewrite\Catalog;
class Product extends \Magento\Catalog\Model\Product
{
/* tilrettninger her */
}
Det skal her bemærkes at jeg har undladt constructer funktionen i eksemplet her - denne skal laves med kald til parent::__construct() med alle parametre angivet
I bund og grund foregår det på samme måde for Blocks og Controllers.
Filen di.xml oprettes hvorefter den nye class oprettes og udvider den gamle class - heri overskriver eller tilføjer du de nye funktioner.