link-in - רשומות קוד

חפש את הקוד שלך >

plugin

נשתמש בVIEWMODULE על מנת להפריד את הלוגיקה מהBLOCK ולהשאיר את הבלוק מתפקד רק לתצוגה

The class -בתוך תקיית ViewModel

MODULE/ViewModel/DeliveryMessage.php

declare(strict_types=1);

namespace Training\ViewModelExample\ViewModel;

use Magento\Framework\View\Element\Block\ArgumentInterface;

class DeliveryMessage implements ArgumentInterface
{
    public function getMessage(): string
    {
        return 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Maxime, obcaecati.';
    }
}

פה יש לבצע implements ArgumentInterface על מנת שיודגר כVIEWNODULE

הוספת הclass דרך XML

<?xml version="1.0" encoding="UTF-8"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="product.info.main">
            <block name="delivery_message"
                   class="Magento\Framework\View\Element\Template"
                   template="Training_ViewModelExample::delivery_message.phtml"
                   before="product.info.price">
                <arguments>
                    <argument name="view_model" xsi:type="object">Training\ViewModelExample\ViewModel\DeliveryMessage</argument>
                </arguments>
            </block>
        </referenceContainer>
    </body>
</page>

PHTML

הוספת arguments על מנת להגדיר את הקלאס

 

<?php /** @var \Magento\Framework\View\Element\Template $block */?>
<div class="delivery_box">
    <strong><?= $block->getViewModel()->getMessage()?></strong>
</div>

יש לקרוא למידע באמצעות ()getViewModel