Question

J'essaie de faire une redirection depuis l'un de mes modules vers Admin > Gérer le client > Modifier.

Mage::app()->getResponse()->setRedirect(Mage::helper("adminhtml")->getUrl("adminhtml/customer/edit/", array("id"=>$customer_id)));

L'URL appelée semble bonne, avec une clé URL.Mais cette URL mène à une réponse 302 et me redirige automatiquement vers le tableau de bord.

En fait il semble que l'URL générée soit différente de l'URL réelle :les clés ne sont pas les mêmes pour les deux, ce qui explique pourquoi je suis redirigé je suppose.

Si je désactive les clés dans l'URL de l'administrateur, la redirection est correcte.

Pouvez-vous m'aider avec ce problème ?Merci beaucoup.

Était-ce utile?

La solution

Jeter un coup d'œil à Comment puis-je générer un lien administrateur à partir d’un contrôleur frontal ?

Réponse courte:vous ne pouvez pas, mais si vous créez un contrôleur d'administration qui agira comme un proxy pour obtenir la clé d'URL, effectuez la redirection (puisque vous pouvez désactiver la validation de l'URL d'administration en utilisant $_publicActions).

class MagePal_ProxyCustomerRedirect_Adminhtml_RedirectController extends Mage_Adminhtml_Controller_Action
{
    /**
     * Array of actions which can be processed without secret key validation
     *
     * @var array
     */
    protected $_publicActions = array('redirecttocustomer');

    public function redirecttocustomerAction()
    {
        // get the customer id pass by your observer (url key)
        Mage::app()->getResponse()->setRedirect(Mage::helper("adminhtml")->getUrl("adminhtml/customer/edit/", array("id"=>$customer_id)));

Dans ton observateur

  Mage::app()->getResponse()->setRedirect(Mage::helper("adminhtml")->getUrl("adminhtml/redirecttocustomer/edit/", array("id"=>$customer_id)));

Voir Mage_Adminhtml_Controller_Action

protected function _validateSecretKey()
{
    if (is_array($this->_publicActions) && in_array($this->getRequest()->getActionName(), $this->_publicActions)) {
        return true;
    }

    if (!($secretKey = $this->getRequest()->getParam(Mage_Adminhtml_Model_Url::SECRET_KEY_PARAM_NAME, null))
        || $secretKey != Mage::getSingleton('adminhtml/url')->getSecretKey()) {
        return false;
    }
    return true;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top