ฉันเพิ่มแท็บที่กำหนดเองใหม่ในแผงควบคุมลูกค้า customer/account
หากรูปแบบกำหนดเองของฉันจะถูกดำเนินการประสบความสำเร็จผมต้องเปลี่ยนเส้นทางไปที่หน้าหลักของลูกค้า ฉันจะทำสิ่งนี้ได้อย่างไร
ฉันเพิ่มแท็บที่กำหนดเองใหม่ในแผงควบคุมลูกค้า customer/account
หากรูปแบบกำหนดเองของฉันจะถูกดำเนินการประสบความสำเร็จผมต้องเปลี่ยนเส้นทางไปที่หน้าหลักของลูกค้า ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
คุณสามารถใช้รหัสด้านล่างได้โดยตรงใน Action controller
$this->_redirect('customer/account/');
ใช้รหัสด้านล่าง:
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;
}
หวังว่ามันจะเป็นประโยชน์กับคุณและสำหรับคนอื่น ๆ
public function execute()
{
$resultRedirect = $this->resultRedirectFactory->create();
$resultRedirect->setPath('routename/controllerpath/controllername');
return $resultRedirect;
}
ไม่จำเป็นต้องประกาศ $ this-> resultRedirectFactory ในโครงสร้างตามที่ประกาศโดยอัตโนมัติในโครงสร้างของ \ Magento \ Framework \ App \ Action \ Action ที่ตัวควบคุมแบบกำหนดเองของคุณควรขยาย มิฉะนั้นคุณจะได้รับข้อผิดพลาดระหว่างการรวบรวม: resultRedirectFactory ได้รับการประกาศแล้ว
ลองรหัสนี้:
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);
ลองใช้รหัสนี้ฉันหวังว่าคุณจะใช้มัน :)
$this->_url->getUrl()
รายละเอียดที่ขาดหายไปสำหรับฉันขอบคุณ!
ลองใช้รหัสนี้ในคอนโทรลเลอร์เพื่อเปลี่ยนเส้นทางไปยังหน้าก่อนหน้า:
<?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;
}
}
หากต้องการเปลี่ยนเส้นทางไปยังรหัสตะโกน URL ที่ใช้ได้ก็ดีสำหรับฉัน กรุณาตรวจสอบนี้
public function execute()
{
$this->getResponse()->setRedirect($url);
}
ที่นี่ $ url เต็ม url เช่นhttp://yoursite.com/customer/account/create/