Tôi đã thêm một tab tùy chỉnh mới trong bảng điều khiển của khách hàng. Nếu biểu mẫu tùy chỉnh của tôi được thực hiện thành công, tôi cần chuyển hướng đến trang chính của khách hàng customer/account
. Tôi có thể làm cái này như thế nào?
Tôi đã thêm một tab tùy chỉnh mới trong bảng điều khiển của khách hàng. Nếu biểu mẫu tùy chỉnh của tôi được thực hiện thành công, tôi cần chuyển hướng đến trang chính của khách hàng customer/account
. Tôi có thể làm cái này như thế nào?
Câu trả lời:
Bạn có thể trực tiếp sử dụng mã dưới đây trong Trình điều khiển hành động
$this->_redirect('customer/account/');
Sử dụng mã dưới đây:
protected $resultRedirect;
public function __construct(\Magento\Framework\Controller\ResultFactory $result){
$this->resultRedirect = $result;
}
public function execute()
{
$resultRedirect = $this->resultRedirect->create(ResultFactory::TYPE_REDIRECT);
$resultRedirect->setUrl($this->_redirect->getRefererUrl());
return $resultRedirect;
}
Hy vọng nó sẽ hữu ích cho bạn và cho người khác.
public function execute()
{
$resultRedirect = $this->resultRedirectFactory->create();
$resultRedirect->setPath('routename/controllerpath/controllername');
return $resultRedirect;
}
Không cần khai báo $ this-> resultRedirectFactory trong cấu trúc vì nó tự động được khai báo theo cấu trúc của \ Magento \ Framework \ App \ Action \ Action mà bộ điều khiển tùy chỉnh của bạn sẽ mở rộng. Nếu không, bạn sẽ gặp lỗi trong quá trình biên dịch: resultRedirectFactory đã được khai báo
Hãy thử mã này:
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;
}
}
$resultRedirect = $this->resultRedirectFactory->create();
$this->messageManager->addNotice(__("Login Reuqire For Edit Post. So Please <i class='fa fa-lock'></i> Login Now And Edit Your Post."));
$customerBeforeAuthUrl = $this->_url->getUrl('customer/account/login', array('referer' => $objecturl->getEncodedUrl($this->_url->getUrl(''))));
return $resultRedirect->setPath($customerBeforeAuthUrl);
Hãy thử mã này, tôi hy vọng bạn có thể sử dụng nó :)
$this->_url->getUrl()
là chi tiết còn thiếu cho tôi, cảm ơn!
Hãy thử mã này trong bộ điều khiển để chuyển hướng đến trang trước:
<?php
namespace Vendor\Module\Controller\Index;
class Index extends \Magento\Framework\App\Action\Action {
protected $_pageFactory;
/**
* @var \Magento\Framework\Session\SessionManagerInterface
*/
protected $_sessionManager;
public function __construct(
\Magento\Framework\App\Action\Context $context
) {
$this->resultFactory = $context->getResultFactory();
return parent::__construct($context);
}
public function execute()
{
$resultRedirect = $this->resultRedirectFactory->create();
$url = $this->_redirect->getRefererUrl();
$resultRedirect->setUrl($url);
return $resultRedirect;
}
}
Để chuyển hướng đến mã dưới đây của URL cụ thể hoạt động tốt đối với tôi. Xin vui lòng kiểm tra này ra
public function execute()
{
$this->getResponse()->setRedirect($url);
}
Ở đây, $ url là url đầy đủ. ví dụ: http://yoursite.com/customer/account/create/