Overskriv Block, models og Controllers i Magento2

Posted in: Magento, Tips

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.

 

2 years ago
Copyright © 2013-present Magento, Inc. All rights reserved.