0

I'm doing the Save and Continues button in "Slide" page.

So what I've done til now: enter image description here

Everything was perfect, but my Save and Continue Edit button doesn't work. After I click the button, it throws a success message and returns back to the index page, but what I want is detail page.

I know it because, in Save.php file, I've redirected it back to index page, but I can't remove that, because when I do that, the save throw an error about missing URI.

And I can't make another Save.php just for this Save and Continue button, right?
Please give me advice, thanks.


Here is my code:

C:\xampp\htdocs\magento\app\code\Aht\BannerSlider\Block\Adminhtml\Slide\Edit\SaveAndContinueButton.php

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Aht\BannerSlider\Block\Adminhtml\Slide\Edit;
use Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface;
/**
 * Class SaveAndContinueButton
 */
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' => 'saveAndContinueEdit'],
 ],
 ],
 'sort_order' => 80,
 ];
 }
}


C:\xampp\htdocs\magento\app\code\Aht\BannerSlider\Controller\Adminhtml\Slide\Save.php

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 20/07/2018
 * Time: 4:15 CH
 */
namespace Aht\BannerSlider\Controller\Adminhtml\Slide;
use Magento\Backend\App\Action\Context;
use Aht\BannerSlider\Model\SlideFactory;
class Save extends \Magento\Framework\App\Action\Action
{
 protected $slideFactory;
 public function __construct(
 Context $context,
 SlideFactory $slideFactory
 ) {
 $this->slideFactory = $slideFactory;
 parent::__construct($context);
 }
 /**
 * Save action
 *
 * @SuppressWarnings(PHPMD.CyclomaticComplexity)
 * @return \Magento\Framework\Controller\ResultInterface
 */
 public function execute()
 {
 $data = $this->getRequest()->getPostValue();
 /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
 $resultRedirect = $this->resultRedirectFactory->create();
//
 if ($data) {
 try{
 $id = $this->getRequest()->getParam('id');
 $model = $this->slideFactory->create()->load($id);
 $data['id'] = $id;
 $model->setData($data);
 $model->save();
 $this->messageManager->addSuccessMessage(__('Update Slide Successfully.'));
 $resultRedirect->setPath('*/*/');
 return $resultRedirect;
 }
 catch (\Exception $e) {
 $this->messageManager->addErrorMessage($e->getMessage());
 }
 }
 }
}
asked Aug 9, 2018 at 3:17

2 Answers 2

4

When Save and Continue button is pressed, a back/edit string is appended to the submit url by default, so in your save controller you can check for it and set redirect url accordingly.

Change the return statement of your save controller to something like below:

//check for `back` parameter
if ($this->getRequest()->getParam('back')) {
 return $resultRedirect->setPath('*/*/edit', ['id' => $model->getId(), '_current' => true]);
}
return $resultRedirect->setPath('*/*/');
...
answered Aug 9, 2018 at 7:07
0
0

Add below code to UI component form XML file

<item name="buttons" xsi:type="array">
 <item name="save_and_continue" xsi:type="string">Namespace\ModuleName\Block\Adminhtml\ModuleName\Edit\SaveAndContinueButton</item>
</item>


<?php
namespace Namespace\ModuleName\Block\Adminhtml\ModuleName\Edit;
 use Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface;
 /**
 * Class SaveAndContinueButton
 */
 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' => 'saveAndContinueEdit'],
 ],
 ],
 'sort_order' => 80,
 ];
 }
 }
answered Aug 9, 2018 at 6:34
1
  • Thanks for reply, i thing the problem wasn't there :D because it run into Edit\SaveAndContinueButton successfully, and then it go to Save.php successfully as well, but i redirect it back to index page. :) Commented Aug 9, 2018 at 6:35

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.