Magento2 - отсутствует пользовательский блок adminhtml после обновления до версии 2.2
У нас был пользовательский блок, введенный в раздел adminhtml. Этот блок управляется в модуле (назовем его поставщиком/модулем), и он отлично работал в Magento 2.1.*, следуя этой методологии magento 2 - Как создать пользовательский блок "администратор" и отобразить его на существующей странице администратора?
После обновления до 2.2 блок исчез
Я проверил конкретную планировку (в нашем случае sales_order_view.xml
) на наличие каких-либо структурных изменений в новая версия, но контейнеры и блоки выглядят так же, как и у нас в 2.1.*
Есть какие-нибудь идеи по этому поводу?
Это файл конкретного макета, который отлично работал в 2.1.*
App/code/Vendor/Module/view/adminhtml/layout/sales_order_view.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="order_info">
<block class="Vendor\Module\Block\Adminhtml\Sales\Order\View\Form" name="our_unique_block_name" template="Vendor_Module::our_template.phtml"/>
</referenceBlock>
</body>
</page>
ОБНОВЛЕНИЕ
Щедрость: предоставьте XML-код для вставки блока в макет sales_order_view
adminhtml, объяснив, как разместить его в разных разделах страницы
3 answers
Неро Фанг ответ был хорошей попыткой и привел меня к реальной проблеме, ища все sales_order_view
появления в папке поставщика
2.2 версия добавляет модуль Temando_shipping, который переопределяет sales_order_view
макет
Vendor/temando/module-shipping-m2/view/adminhtml/layout/sales_order_view.xml
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="order_tab_info">
<block class="Temando\Shipping\Block\Adminhtml\Sales\Order\View\Info" name="order_info" template="Temando_Shipping::sales/order/view/info.phtml">
<container name="extra_customer_info"/>
</block>
</referenceContainer>
</body>
</page>
Чтобы я мог восстановить наш пользовательский блок (используя тот же XML-макет, что и тот, который мы использовали в 2.1.*) просто путем добавления зависимости модуля
<module name="Vendor_Module">
<sequence>
<module name="Temando_Shipping"/>
</sequence>
</module>
Как я вижу. Magento добавил новый контейнер внутри блока с именем order_info
:
<block class="Magento\Sales\Block\Adminhtml\Order\View\Info" name="order_info" template="Magento_Sales::order/view/info.phtml">
<container name="extra_customer_info"/>
</block>
Таким образом, вы можете попробовать использовать этот код ниже:
<referenceContainer name="extra_customer_info">
<block class="Vendor\Module\Block\Adminhtml\Sales\Order\View\Form" name="our_unique_block_name" template="Vendor_Module::our_template.phtml"/>
</referenceBlock>
Надеюсь, это поможет!
Можете ли вы попробовать с помощью referencecontainer?
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="order_info">
<block class="Vendor\Module\Block\Adminhtml\Sales\Order\View\Form" name="our_unique_block_name" template="Vendor_Module::our_template.phtml"/>
</referenceBlock>
</body>
</page>