magento 2의 컨트롤러 리디렉션


15

고객 대시 보드에 새로운 사용자 정의 탭을 추가했습니다. 내 사용자 지정 양식이 성공적으로 실행되면 고객 기본 페이지로 리디렉션해야합니다 customer/account. 어떻게해야합니까?

답변:


25

액션 컨트롤러에서 아래 코드를 직접 사용할 수 있습니다

$this->_redirect('customer/account/');


21

아래 코드를 사용하십시오.

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

그것이 당신과 다른 사람들에게 도움이되기를 바랍니다.


1
당신은 내 친구는 이제 내 신, 나는 매일 밤 당신에게기도합니다! 감사합니다! 시간을 절약했습니다.
OZZIE

14
public function execute()
{
$resultRedirect = $this->resultRedirectFactory->create();
$resultRedirect->setPath('routename/controllerpath/controllername');
return $resultRedirect;
}

커스텀 컨트롤러가 확장 할 \ Magento \ Framework \ App \ Action \ Action의 구문에서 선언 된 자동으로 $ this-> resultRedirectFactory를 construct에 선언 할 필요가 없습니다. 그렇지 않으면 컴파일 중에 오류가 발생합니다. resultRedirectFactory가 이미 선언되었습니다.


2

이 코드를 사용해보십시오 :

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

이 코드를 사용해보십시오.


1
를 사용하면 $this->_url->getUrl()나에게 누락 된 세부 사항 이 있었습니다. 감사합니다!
cjohansson

0

이전 페이지로 리디렉션하려면 컨트롤러 에서이 코드를 사용해보십시오.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.