【问题标题】:Save button not working in custom module form保存按钮在自定义模块表单中不起作用
【发布时间】:2017-08-08 06:45:03
【问题描述】:

使用 uicomponent 在 Magento Admin 中创建了一个自定义模块编辑表单,但是当我单击保存按钮时,它会重定向到同一编辑页面,而不是我在创建保存按钮时指定的操作页面。它会在关键参数后的 URL 中使用未定义的参数不断重定向到编辑页面。我错过了什么吗?以下是我用来生成按钮的代码。

<item name="buttons" xsi:type="array">
            <item name="back" xsi:type="string"><Vendor>\<Module>\Block\Adminhtml\Listings\Edit\BackButton</item>
            <item name="delete" xsi:type="string"><Vendor>\<Module>\Block\Adminhtml\Listings\Edit\DeleteButton</item>
            <item name="save" xsi:type="string"><Vendor>\<Module>\Block\Adminhtml\Listings\Edit\SaveButton</item>
        </item>

保存按钮.php

<?php
namespace <Vendor>\<Module>\Block\Adminhtml\Listings\Edit;

use Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface;

/**
 * Class SaveButton
 */
class SaveButton extends GenericButton implements ButtonProviderInterface
{
    /**
     * @return array
     */
    public function getButtonData()
    {
        $url = $this->getUrl('properties/listings/update', ['property_id' => $this->getId()]);
        return [
            'label' => __('Save Property'),
            'class' => 'save primary',
            'data_attribute' => [
                'mage-init' => ['button' => ['event' => 'save']],
                'form-role' => 'save',
            ],
            'sort_order' => 90,
            'action' => $url
        ];
    }
}

通用按钮.php

<?php
namespace <Vendor>\<Module>\Block\Adminhtml\Listings\Edit;

use Magento\Search\Controller\RegistryConstants;

/**
 * Class GenericButton
 */
class GenericButton
{
    /**
     * Url Builder
     *
     * @var \Magento\Framework\UrlInterface
     */
    protected $urlBuilder;

    /**
     * Registry
     *
     * @var \Magento\Framework\Registry
     */
    protected $registry;

    /**
     * Constructor
     *
     * @param \Magento\Backend\Block\Widget\Context $context
     * @param \Magento\Framework\Registry $registry
     */
    public function __construct(
        \Magento\Backend\Block\Widget\Context $context,
        \Magento\Framework\Registry $registry
    ) {
        $this->urlBuilder = $context->getUrlBuilder();
        $this->registry = $registry;
    }

    /**
     * Return the synonyms group Id.
     *
     * @return int|null
     */
    public function getId()
    {
        $data = $this->registry->registry('property_data');
        //return $contact ? $contact->getId() : null;
        return $data['property_id'];
    }

    /**
     * Generate url by route and parameters
     *
     * @param   string $route
     * @param   array $params
     * @return  string
     */
    public function getUrl($route = '', $params = [])
    {
        return $this->urlBuilder->getUrl($route, $params);
    }
}

提前致谢

【问题讨论】:

    标签: magento magento2


    【解决方案1】:

    同样的问题。

    因为provider.js中的submit_url是未定义的

    defaults: {
        clientConfig: {
            urls: {
                save: '${ $.submit_url }',
                beforeSave: '${ $.validate_url }'
            }
        }
    },
    

    我用Datasource中js_config下的submit_url解决了

    <dataSource name="settings_form_data_source">
        <argument name="data" xsi:type="array">
            <item name="js_config" xsi:type="array">
                <item name="submit_url" xsi:type="url" path="brikl/settings/save"/> 
                <item name="component" xsi:type="string">Magento_Ui/js/form/provider</item>
            </item>
        </argument>
        .....
    

    来源:https://magento.stackexchange.com/questions/139639/uicomponent-form-save-button-not-working

    【讨论】:

      猜你喜欢
      • 2017-07-09
      • 2014-04-27
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      相关资源
      最近更新 更多