Перенаправление из блока не работает
Я пытаюсь перенаправить из блока, но это не работает. Но одни и те же методы работают в разных проектах.
1. Процесс 1
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Vendor\PaymentGateway\Helper\Data $storeHelper,
\Magento\Sales\Api\Data\OrderInterface $order,
\Magento\Framework\App\Response\Http $response,
\Magento\Sales\Model\Order $orderModel,
\Vendor\PaymentGateway\Model\CreateorderFactory $createorder,
\Vendor\PaymentGateway\Model\PaymentresponseFactory $paymentResponse,
\Magento\Checkout\Model\Session $checkoutSession,
\Magento\Sales\Model\OrderFactory $orderFactory,
\Magento\Sales\Model\Order\Email\Sender\OrderSender $orderEmailSender,
\Magento\Framework\Controller\Result\RedirectFactory $redirectFactory,
array $data = []
) {
parent::__construct($context, $data);
$this->storeHelper = $storeHelper;
$this->order = $order;
$this->response = $response;
$this->orderModel = $orderModel;
$this->createorder = $createorder;
$this->paymentResponse = $paymentResponse;
$this->checkoutSession = $checkoutSession;
$this->orderFactory = $orderFactory;
$this->orderEmailSender = $orderEmailSender;
$this->redirectFactory = $redirectFactory;
}
public function redirectAccordingToStatus($status='30')
{
echo 'redirect from here ' , $this->getBaseUrl().$this->REDIRECT_URL[$status] ;
//return $this->redirectFactory->create()->setPath($this->REDIRECT_URL[$status]);
$this->response->setRedirect($this->getBaseUrl().$this->REDIRECT_URL[$status]);
exit;
}
2. Процесс 2: С тем же конструктором, но другим подходом.
return $this->redirectFactory->create()->setPath('paym/payment/cancel');
Ни один из этих методов не работает. Я подумал, что некоторые классы могут конфликтовать с ним, поэтому я вставил весь код конструктора.
Также нет ошибок во время setup:di:compile
и в журналах. Если вы знаете о любой другой подход, пожалуйста, предложите этот.
2
Author: Purushotam Sangroula, 2018-01-25
2 answers
protected $_responseFactory;
protected $url;
public function __construct(
\Magento\Framework\App\ResponseFactory $responseFactory,
) {
$this->_responseFactory = $responseFactory;
$this->url = $context->getUrlBuilder();;
}
ИСПОЛЬЗУЙТЕ ВОТ ТАК::
$CustomRedirectionUrl = $this->url->getUrl('[ModuleName]/[ModuleName]/[[Action]');
$this->_responseFactory->create()->setRedirect($CustomRedirectionUrl)->sendResponse();
1
Author: Birjitsinh Zala, 2018-01-25 09:52:49
Вы можете достичь этого с помощью Процесса 2, с небольшим изменением.
Вы должны использовать ResultFactory
вместо RedirectFactory
, и вы должны указать тип как перенаправление, поэтому ваш код следует изменить на
public function __construct(
................
.......................
\Magento\Framework\Controller\ResultFactory $resultFactory,
) {
parent::__construct($context, $data);
........
..........
$this->resultFactory = $resultFactory;
}
public function redirectAccordingToStatus($status='30')
{
$resultRedirect = $this->resultFactory->create(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT);
return $resultRedirect->setPath('paym/payment/cancel');
}
Снова запустите обновление установки и проверьте, работает ли оно.
0
Author: MGento, 2018-01-25 06:51:17