Bộ điều khiển chuyển hướng trong magento 2


14

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:


23

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/');


20

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.


1
bạn của tôi bây giờ là chúa của tôi, tôi cầu nguyện cho bạn mỗi đêm! Cảm ơn bạn! Tiết kiệm cho tôi rất nhiều thời gian.
OZZIE

13
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


2

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;
        }
    }

2
$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ó :)


1
Sử dụng $this->_url->getUrl()là chi tiết còn thiếu cho tôi, cảm ơn!
cjohansson

0

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;
    }
}

0

Để 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/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.