Redireccionamento para Administrador de Cliente de Edição (com a chave) de um controlador frontend

magento.stackexchange https://magento.stackexchange.com//questions/33803

Pergunta

Eu estou tentando fazer um redirecionamento de um dos meus módulo para Administração > Gerenciar Cliente > Editar.

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

O chamado de URL parece ser bom, com uma chave url.Mas esta URL leva a uma resposta 302 e auto-redirecionamento-me para o dashboard.

Na verdade, parece que a URL gerada é diferente do URL real :as chaves não são as mesmas para ambos, o que explica por que eu sou redirecionado, eu acho.

Se eu desabilitar as chaves no URL do admin, o redirecionamento é ok.

Você pode me ajudar com esse problema ?Muito obrigado.

Foi útil?

Solução

Dê uma olhada no Como posso gerar um link admin a partir de um controlador frontend?

Resposta curta:você não pode, mas se você criar um controlador de administração, que irá atuar como um proxy para obter o url chave, em seguida, fazer o redirecionamento, pois você pode desativar a validação de url do administrador usando $_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)));

Em seu observador

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

Ver 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;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top