J'ai ajouté un nouvel onglet personnalisé dans le tableau de bord client. Si mon formulaire personnalisé est correctement exécuté, je dois rediriger vers la page principale du client customer/account
. Comment puis-je faire ceci?
J'ai ajouté un nouvel onglet personnalisé dans le tableau de bord client. Si mon formulaire personnalisé est correctement exécuté, je dois rediriger vers la page principale du client customer/account
. Comment puis-je faire ceci?
Réponses:
Vous pouvez utiliser directement le code ci-dessous dans le contrôleur d'action
$this->_redirect('customer/account/');
Utilisez le code ci-dessous:
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;
}
J'espère que cela vous sera utile et pour les autres.
public function execute()
{
$resultRedirect = $this->resultRedirectFactory->create();
$resultRedirect->setPath('routename/controllerpath/controllername');
return $resultRedirect;
}
Pas besoin de déclarer $ this-> resultRedirectFactory dans la construction comme son auto déclaré dans la construction de \ Magento \ Framework \ App \ Action \ Action à laquelle votre contrôleur personnalisé doit s'étendre. Sinon, vous obtiendrez une erreur lors de la compilation: resultRedirectFactory est déjà déclaré
Essayez ce code:
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);
Essayez ce code, j'espère que vous pourrez l'utiliser :)
$this->_url->getUrl()
était le détail manquant pour moi, merci!
Essayez ce code dans le contrôleur pour rediriger vers la page précédente:
<?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;
}
}
Pour rediriger vers une URL spécifique, le code ci-dessous fonctionne bien pour moi. Veuillez vérifier ceci
public function execute()
{
$this->getResponse()->setRedirect($url);
}
Ici, $ url est une URL complète. par exemple http://yoursite.com/customer/account/create/