小编Man*_*n4x的帖子

magento2:使用Ajax加载uicomponent

几天来,我一直在为此苦苦挣扎...对于管理员扩展,我正尝试使用Ajax加载uiComponent以便在选项卡中显示。uiComponent已正确加载,但似乎未由客户端敲除逻辑完全处理。

namespace Man4x\MondialRelay2\Block\Adminhtml\Shipping;

class Tabs
extends \Magento\Backend\Block\Widget\Tabs {
protected function _construct()
{
    parent::_construct();
    $this->setId('mondialrelay2_shipping_tabs');
    $this->setDestElementId('container');
    $this->setTitle(__('MondialRelay'));
} 

protected function _beforeToHtml()
{
    $this->addTab(
        'mass_shipping',
        [
            'label' => __('Mass Shipping'),
            'title' => __('Mass Shipping'),
            'url'   => $this->getUrl('*/*/massshipping', ['_current' => true]),
            'class'  => 'ajax'
        ]
    );

    return parent::_beforeToHtml();
}
}
Run Code Online (Sandbox Code Playgroud)

这是简单的控制器布局:

<?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">
<container name="root" label="Root">
    <uiComponent name="mondialrelay2_massshipping_grid"/>
</container>
Run Code Online (Sandbox Code Playgroud)

注意:以标准方式(即非AJAX)加载时,此自定义uiComponent可以完美地发挥功能

跟踪AJAX响应时,我可以看到已为uiComponent加载了正确的HTML代码(包括Magento特定的“ x-magento-init”标签)。然后由jquery-ui回调处理:

    this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );

    // support: jQuery <1.8
    // jQuery <1.8 returns false …
Run Code Online (Sandbox Code Playgroud)

ajax uicomponents magento2

5
推荐指数
1
解决办法
1695
查看次数

标签 统计

ajax ×1

magento2 ×1

uicomponents ×1