Cách mở rộng tệp mẫu phụ trợ trong Magento 2


7

Tôi không thể tìm thấy cách mở rộng tệp mẫu phụ trợ trong Magento 2, tuy nhiên tôi đã tìm thấy cách mở rộng tệp mẫu lối vào từ đây . Nếu tôi mở rộng tệp tại design/adminhtml/Magento/backendnó có thể ghi đè lên trong phiên bản nâng cấp Magento. Vì vậy, tôi muốn viết design/adminhtml/vendor/backendvà mô-đun thư mục cụ thể. Tuy nhiên tôi đã thử điều này bằng cách đặt các tệp phtml cần thiết, nhưng nó không hiển thị từ đường dẫn của tôi, nó lấy từ đường dẫn magento mặc định.

C: \ xampp \ htdocs \ NewMagento2 \ app \ design \ adminhtml \ eller \ 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 \ samples \ tab \ view.phtml

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

Và nếu tôi sử dụng các khuôn mẫu từ phụ trợ thì nó vẫn hiển thị từ magento mặc định C:/xampp/htdocs/NewMagento2/app/code//Magento/Customer/view/adminhtml/templates/tab/view.phtml

Giúp tôi chi tiết về cách mở rộng tệp mẫu quản trị Magento2


Tôi tìm thấy câu trả lời liên quan đến @Marius ở đây . Nhưng cuối cùng vẫn chưa kết luận câu trả lời trong các bình luận của Marius
prasad maganti

Câu trả lời:


9

Tôi đưa ra ví dụ ở đây làm thế nào để mở rộng trang xem đơn đặt hàng. Như thế này, bạn có thể mở rộng bất kỳ mô-đun nào bạn muốn. Bỏ các bước dưới đây

Bước 1) Kích hoạt tiện ích mở rộng để chỉ định config.phptệp từ thư mục app / etc

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

Bước 2) Tạo Custom.phplớp trong khối

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

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

}

Bước 3) Tạo Info.phptập tin để mở rộng lõiInfo.php

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

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

}

Bước 4) Tạo di.xmltệp để chỉ định lớp bạn mở rộng (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>

Bước 5) Tạo module.xmltập tin để chỉ định phiên bản thiết lập

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

Bước 6) Tạo sales_order_view.xmltệp từ thư mục Learning / RewriteSales / view / layout và viết mã dưới đây

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

Bước 7) Tạo Custom.phtmlInfo.phtmltệp từ Học / RewriteSales / view / layout và chèn mã bên dưới.

Tùy chỉnh

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

Thông tin

Đầu tiên Sao chép mã từ tệp Magento \ Sales \ view \ adminhtml \ samples \ order \ view \ info.phtml và qua đây sau đó thêm một dòng nữa

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

Bước 8) Cuối cùng, dọn sạch bộ đệm và để xem trang tùy chỉnh Đặt hàng bán hàng của bạn.

Nó làm việc cho tôi. Nếu bạn có bất kỳ câu hỏi cho tôi biết?


Điều này rất hữu ích, cảm ơn! Điều gì sẽ xảy ra nếu tôi muốn làm một cái gì đó đơn giản hơn thế này: nếu tôi chỉ muốn ghi đè lên một kiểu trong magento2\vendor\magento\theme-adminhtml-backend\web\css\source\forms\_controls.lessthì sao? Tôi hy vọng bạn có thể trả lời câu hỏi của tôi mà tôi đã đăng riêng .
thdoan


0

Và đây là my .jsmã tập tin.

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

Và đây là Người quan sát của tôi

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]
                );
            }
        }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.