Domanda

Ho bisogno di una pagina vuota per ricevere un post di Ajax e restituire JSON.

Se eseguo il codice sotto qualsiasi pagina di backend, il link apre una pagina vuota, che configura sul mio controller e router.

<?php echo Mage::helper('adminhtml')->getUrl('installments/adminhtml_ajax/'); ?>
.

Ma se corro in qualsiasi pagina del frontend, la chiave dell'URL non è la stessa e sono diretto al cruscotto.

Non so come ottenere l'URL corretto per il frontend, qualcuno avrebbe un'idea che funziona?

Esempi:

Backend  = installments/adminhtml_ajax/index/key/000085c50c4882df8a9cae52c8392227/
Frontend = installments/adminhtml_ajax/index/key/99edadac5bc5bb1e2421d3be38db525e/
.

Router

<frontend>
    <routers>
        <installments>
            <use>admin</use>
            <args>
                <module>Dexxtz_Installments</module>
                <frontName>installments</frontName>
            </args>
        </installments>         
    </routers>
</frontend>
<admin>
    <routers>
        <installments>
            <use>admin</use>
            <args>
                <module>Dexxtz_Installments</module>
                <frontName>installments</frontName>
            </args>
        </installments>
    </routers>
</admin>
.

Già cambiato il frontend per lo standard e nulla è cambiato.

È stato utile?

Soluzione

Il key nell'URL è generato in base alla sessione di amministrazione.
E non è possibile condividere le sessioni di amministrazione e frontale, ecco perché quando si effettua la chiamata dal frontend ottieni una chiave di sessione diversa.

Comunque, non è una buona pratica effettiva effettuare chiamate a backend Azioni dal frontend.
Dovresti avere 2 controller separati, uno per backend e uno per frontend.
Per non duplicare il codice, è possibile inserire tutto all'interno di un metodo in un aiutante e semplicemente chiamare quel metodo in entrambi i controller.

Altri suggerimenti

Il tuo anteriore e amministratore <routers> (<frontName>installments</frontName>) non dovrebbe essere lo stesso.

Sono due modi per configurare i moduli di amministrazione

1) Dato un altro nome anteriore

  <admin>
    <routers>
        <installments>
            <use>admin</use>
            <args>
                <module>Dexxtz_Installments</module>
                <frontName>admin_installments</frontName>
.

2) Metti il tuo modulo prima / dopo AMMINHTML

<admin>
      <routers>
        <adminhtml>
            <args>
                <modules>
                    <Company_Adminhtml before="Mage_Adminhtml">Company_Adminhtml</Company_Adminhtml>
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top