ตัวเปลี่ยนเส้นทางใน magento 2


15

ฉันเพิ่มแท็บที่กำหนดเองใหม่ในแผงควบคุมลูกค้า 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;
}

ไม่จำเป็นต้องประกาศ $ this-> resultRedirectFactory ในโครงสร้างตามที่ประกาศโดยอัตโนมัติในโครงสร้างของ \ Magento \ Framework \ App \ Action \ Action ที่ตัวควบคุมแบบกำหนดเองของคุณควรขยาย มิฉะนั้นคุณจะได้รับข้อผิดพลาดระหว่างการรวบรวม: 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;
    }
}

0

หากต้องการเปลี่ยนเส้นทางไปยังรหัสตะโกน URL ที่ใช้ได้ก็ดีสำหรับฉัน กรุณาตรวจสอบนี้

public function execute()
{
    $this->getResponse()->setRedirect($url);
}

ที่นี่ $ url เต็ม url เช่นhttp://yoursite.com/customer/account/create/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.