Magento – Admin grid save & continue edit button – ui components

magento2

So as you already understand I want to create Save & Continue Edit button with ui components. Here is my ui components file:

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

SaveAndContinueButton.php:

<?php

namespace Vendor\ProductComments\Block\Adminhtml\Comment\Edit;

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

class SaveAndContinueButton extends GenericButton implements ButtonProviderInterface
{
    /**
     * @return array
     */
    public function getButtonData()
    {
        return [
            'label' => __('Save and Continue Edit'),
            'class' => 'save',
            'data_attribute' => [
                'mage-init' => ['button' => ['event' => 'save']],
                'form-role' => 'save',
            ],
            'sort_order' => 80,
        ];
    }
}

My save button is working correctly, but when I press save and continue button, it just goes to admin index page. Also I haven't yet decided how to do that so it stays on edit page, but first I need to fix it so it uses Save.php controller. For save button i did this:

<item name="config" xsi:type="array">
                <item name="submit_url" xsi:type="url" path="*/*/save"/>
            </item>

Do i need to do something like this also for save and continue button?

Best Answer

First you can use this block use in our UI components xml Files.

<item name="buttons" xsi:type="array">
            <item name="back" xsi:type="string">vendor\ProductComments\Block\Adminhtml\Index\Edit\Button\Back</item>
            <item name="delete" xsi:type="string">vendor\ProductComments\Block\Adminhtml\Index\Edit\Button\Delete</item>
            <item name="reset" xsi:type="string">vendor\ProductComments\Block\Adminhtml\Index\Edit\Button\Reset</item>
            <item name="save" xsi:type="string">vendor\ProductComments\Block\Adminhtml\Index\Edit\Button\Save</item>
            <item name="save_and_continue" xsi:type="string">vendor\ProductComments\Block\Adminhtml\Index\Edit\Button\SaveAndContinue</item>
</item>

Then you can open save and continue block open and can you use this code

public function getButtonData() {
        return [
            'label' => __('Save and Continue Edit'),
            'class' => 'save',
            'data_attribute' => [
                'mage-init' => [
                    'button' => ['event' => 'saveAndContinueEdit'],
                ],
            ],
            'sort_order' => 80,
        ];

We also faced this issue, This code working you can use it.