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

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

ViewModel

נשתמש בVIEWMODULE על מנת להפריד את הלוגיקה מהBLOCK ולהשאיר את הבלוק מתפקד רק לתצוגה , נכנס רק ממגנטו 2.2 וזהו הדרך הנכונה יותר לעבודה.

*חייב להיות מחובר ל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  או באמצעות $viewModel = $block->getData('view_model')

מודול רלוונטי : zur.web-e.co.il\app\code\CustomProductAttribute\NewAtt\ViewModel\MyNewViewModel.php

דוקומנטציה : https://devdocs.magento.com/guides/v2.4/extension-dev-guide/view-models.html?itm_source=devdocs&itm_medium=search_page&itm_campaign=federated_search&itm_term=viewmodule