Magento 2でバックエンドテンプレートファイルを拡張する方法


7

Magento 2でバックエンドテンプレートファイルを拡張する方法が見つかりませんでしたが、ここからフロントエンドテンプレートファイルを拡張する方法を見つけまし。ファイルを拡張すると、design/adminhtml/Magento/backendMagentoのアップグレードバージョンで上書きされる可能性があります。そこでdesign/adminhtml/vendor/backend、モジュール固有のフォルダーに書き込みたいと思います。しかし、必要なphtmlファイルを配置してこれを試しましたが、デフォルトのmagentoパスから取得したパスからは表示されません。

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();

そして、私がバックエンドからtemplatehintsを使用する場合、magentoのデフォルトからの表示、すなわち C:/xampp/htdocs/NewMagento2/app/code//Magento/Customer/view/adminhtml/templates/tab/view.phtml

Magento2管理テンプレートファイルを拡張する方法について詳しく教えてください


ここで @Mariusに関連する回答を見つけまし。しかし、ついにマリウスのコメントで答えを結論付けませんでした
プラサードマガンティ

回答:


9

ここでは、販売注文ビューページを拡張する方法の例を示します。このようにして、必要なモジュールを拡張できます。以下のステップを休ませる

手順1)拡張機能を有効にしてconfig.phpapp / etcフォルダーからファイルを指定する

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

ステップ2)Custom.phpブロック内にクラスを作成する

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

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

}

ステップ3)Info.phpコアを拡張するファイルを作成するInfo.php

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

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

}

ステップ4)di.xmlファイルを作成して、拡張するクラスを指定します(依存性注入)

<?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>

手順5)module.xmlセットアップバージョンを指定するファイルを作成する

<?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>

ステップ6)Learning / RewriteSales / view / layoutフォルダーsales_order_view.xmlからファイルを作成し、以下のコードを記述します

<?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>

ステップ7)Learning / RewriteSales / view / layoutからCustom.phtmland Info.phtmlファイルを作成し、以下のコードを挿入します。

Custom.phtml

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

Info.phtml

最初にMagento \ Sales \ view \ adminhtml \ templates \ order \ view \ info.phtmlファイルからコードをコピーし、その後、ここに1行追加します

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

ステップ8)最後にキャッシュを消去し、カスタムコードの[Sales Order View Page]を表示します。

それは私のために働いています。ご不明な点がございましたらお知らせください。


これはとても役に立ちます、ありがとう!これよりももっと簡単なことをしたい場合はどうしますmagento2\vendor\magento\theme-adminhtml-backend\web\css\source\forms\_controls.lessか?スタイルをオーバーライドしたいだけの場合はどうなりますか?別途投稿した私の質問にお答えいただければ幸いです。
thdoan


0

そして、これはmy .jsファイルコードです。

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()                                              
                        }
                };

            },

0

そして、これは私のオブザーバーです

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]
                );
            }
        }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.