Ответы:
В вашем контроллере напишите следующий код:
namespace Company\Module\Controller\Index;
use Magento\Framework\Controller\ResultFactory;
class Actionname name extends \Magento\Framework\App\Action\Action
{
public function execute()
{
$resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
// Your code
$resultRedirect->setUrl($this->_redirect->getRefererUrl());
return $resultRedirect;
}
}
Этот код работает для меня. Надеюсь, он вам тоже поможет.
Это также может быть правильным ответом в более короткой форме Magento 2.0.4
пространство имен Vendorname \ Modulename \ Controller \ Adminhtml \ Index;
класс Fetch extends \ Magento \ Backend \ App \ Action
{
публичная функция execute ()
{
// TODO: реализовать метод execute ().
$ Это -> _ редирект ($ это -> _ redirect-> getRefererUrl ());
}
}
executeметод вернет либо a, Magento\Framework\Controller\ResultInterfaceлибо a Magento\Framework\App\ResponseInterface. К счастью, _redirectметод делает одно из тех, так что это целесообразно:return $this->_redirect($this->_redirect->getRefererUrl());
Пожалуйста, используйте этот код в вашем классе контроллера:
$resultRedirect = $this->resultRedirectFactory->create();
$resultRedirect->setRefererUrl();
return $resultRedirect;
Здесь resultRedirectFactory - это переменная класса, которая может наследоваться от вашего родителя в вашем классе.
Чтобы проверить, задан ли реферальный URL, сначала напечатайте переменную $ _SERVER. Этот код работает для меня.
public function execute(){
$resultRedirect = $this->resultRedirectFactory->create();
try{
$this->messageManager->addSuccess(__('Redirection Sucessful.'));
}catch (\Exception $e) {
$this->messageManager->addError($e->getMessage());
}
$resultRedirect->setUrl($this->_redirect->getRefererUrl());
return $resultRedirect;
}