So erweitern Sie Backend-Vorlagendateien in Magento 2

7

Ich konnte nicht finden, wie Backend-Vorlagendateien in Magento 2 erweitert werden können, aber ich habe gefunden, wie Frontend-Vorlagendateien von hier aus erweitert werden können . Wenn ich die Datei daran erweitere, wird design/adminhtml/Magento/backendsie möglicherweise in der Magento-Upgrade-Version überschrieben. Ich möchte also auf design/adminhtml/vendor/backendbestimmte Ordner schreiben und diese modulieren. Ich habe dies jedoch versucht, indem ich die erforderlichen HTML-Dateien platziert habe, aber es wird nicht von meinem Pfad angezeigt, sondern vom Standard-Magento-Pfad.

C: \ xampp \ htdocs \ NewMagento2 \ app \ design \ adminhtml \ vendor \ backend \ Magento_Customer \ layout \ customer_form.xml

<?xml version="1.0"?>
<!--
/**
 * Copyright © 2015 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="form">
            <block class="Magento\Customer\Block\Adminhtml\Edit\Tab\View" name="customer_edit_tab_view" template="tab/view.phtml">
                <arguments>
                    <argument name="tab_label" xsi:type="string">Customer View</argument>
                    <argument name="sort_order" xsi:type="number">10</argument>
                </arguments>
                <block class="Magento\Customer\Block\Adminhtml\Edit\Tab\View\PersonalInfo" name="personal_info" template="tab/view/personal_info.phtml"/>
            </block>
        </referenceBlock>
    </body>
</page>

C: \ xampp \ htdocs \ NewMagento2 \ app \ design \ adminhtml \ Vendor \ backend \ Magento_Customer \ templates \ tab \ view.phtml

<?php
echo $this->getChildHtml();

Und wenn ich Templatehints aus dem Backend verwende, wird es immer noch von Magento Standard angezeigt, dh C:/xampp/htdocs/NewMagento2/app/code//Magento/Customer/view/adminhtml/templates/tab/view.phtml

Helfen Sie mir im Detail, wie Sie Magento2-Admin-Vorlagendateien erweitern können

Prasad Maganti
quelle
Ich habe hier eine Antwort zu @Marius gefunden . Aber endlich nicht die Antwort in den Kommentaren von Marius
Prasad Maganti

Antworten:

9

Ich habe hier ein Beispiel gegeben, wie die Seite mit der Kundenauftragsansicht erweitert werden kann. So können Sie jedes gewünschte Modul erweitern. Brach die folgenden Schritte

Schritt 1) ​​Aktivieren Sie die Erweiterung, um eine config.phpDatei aus dem Ordner app / etc anzugeben

<?php
return array (
  'modules' => 
  array (
        'Learning_RewriteSales' => 1,
  ),
);

Schritt 2) Erstellen Sie eine Custom.phpKlasse im Block

<?php
namespace Learning\RewriteSales\Block\Adminhtml\Order\View;

class Custom extends \Magento\Backend\Block\Template
{

}

Schritt 3) Erstellen Sie eine Info.phpDatei, um den Kern zu erweiternInfo.php

<?php
namespace Learning\RewriteSales\Block\Adminhtml\Order\View;

class Info extends \Magento\Sales\Block\Adminhtml\Order\View\Info
{

}

Schritt 4) Erstellen Sie eine di.xmlDatei, um anzugeben, welche Klasse Sie erweitert haben (Dependency Injection).

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
    <preference for="Magento\Sales\Block\Adminhtml\Order\View\Info" type="Learning\RewriteSales\Block\Adminhtml\Order\View\Info"/>
</config>

Schritt 5) Erstellen Sie eine module.xmlDatei, um die Setup-Version anzugeben

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
    <module name="Learning_RewriteSales" setup_version="2.0.0">
        <sequence>
            <module name="Magento_Sales"/>
        </sequence>
    </module>
</config>

Schritt 6) Erstellen Sie eine sales_order_view.xmlDatei aus dem Ordner Learning / RewriteSales / view / layout und schreiben Sie den folgenden Code

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="order_info">
            <action method="setTemplate">
                <argument name="template" translate="true" xsi:type="string">order/view/info.phtml</argument>
            </action>
        </referenceBlock>
        <referenceBlock name="order_info">
            <block class="Learning\RewriteSales\Block\Adminhtml\Order\View\Custom" name="sales_order_view_custom" template="order/view/custom.phtml" />
        </referenceBlock>
    </body>
</page>

Schritt 7) Erstellen Sie die Datei Custom.phtmlund Info.phtmlaus Learning / RewriteSales / view / layout und fügen Sie den folgenden Code ein.

Custom.phtml

<h1>Hi, I am here!</h1>

Info.phtml

Kopieren Sie zuerst den Code aus der Datei Magento \ Sales \ view \ adminhtml \ templates \ order \ view \ info.phtml und fügen Sie ihn anschließend hier ein. Fügen Sie anschließend eine weitere Zeile hinzu

<?php echo $block->getChildHtml('sales_order_view_custom');?>

Schritt 8) Bereinigen Sie abschließend den Cache und sehen Sie Ihren benutzerdefinierten Code.

Es funktioniert für mich. Wenn Sie Fragen haben, lassen Sie es mich wissen?

Bojjaiah
quelle
Das ist sehr hilfreich, danke! Was ist, wenn ich etwas noch einfacher machen möchte: Was ist, wenn ich nur einen Stil überschreiben möchte magento2\vendor\magento\theme-adminhtml-backend\web\css\source\forms\_controls.less? Ich hoffe, Sie können meine Frage beantworten , die ich separat gestellt habe .
Dodoan
0

Und das ist my .jsDateicode.

defaults: {
                template: 'Magento_SamplePaymentGateway/payment/form',
                medicaidId: '',
                dateOfBirth: '',
            },

            initObservable: function () {
                this._super()
                    .observe('medicaidId'); 
                this._super()
                    .observe('dateOfBirth');
                return this;
            },

            getCode: function() {
                return 'sample_gateway';
            },

            getData: function() {

                return {
                    'method': this.item.method,
                    "additional_data":{
                        'medicaid_id': this.medicaidId(),
                        'do_birth': this.dateOfBirth()                                              
                        }
                };

            },
Gourav Sharma
quelle
0

Und das ist mein Beobachter

protected $additionalInformationList = [
        'medicaid_id', 'do_birth'        
    ];
public function execute(Observer $observer)
    {
        $data = $this->readDataArgument($observer);
        $additionalData = $data->getData(PaymentInterface::KEY_ADDITIONAL_DATA);
        //$this->_logger->log(100,print_r($additionalData,true));
        if (!is_array($additionalData)) {

            return;
        }
        $paymentInfo = $this->readPaymentModelArgument($observer);
        //$this->_logger->log(100,print_r($paymentInfo,true));

        foreach ($this->additionalInformationList as $additionalInformationKey) {
            if (isset($additionalData[$additionalInformationKey])) {
                $paymentInfo->setAdditionalInformation(
                    $additionalInformationKey,
                    $additionalData[$additionalInformationKey]
                );
            }
        }
}
Gourav Sharma
quelle