2011-09-05 12 views
5

Il mio modulo nel pannello di amministrazione di Magento ha un URL come http://example.com/index.php/mymodule/ ... e contiene una griglia personalizzata con gli ordini. Voglio reindirizzare l'utente alla pagina standard "Vista ordini" quando fa clic su una riga della griglia.Come utilizzare getUrl() in Magento per fare riferimento a un altro modulo?

punti
public function getRowUrl($row) 
{ 
    if (Mage::getSingleton('admin/session')->isAllowed('sales/order/actions/view')) { 
     return $this->getUrl('sales_order/view', array('order_id' => $row->getId())); 
    } 
    return false; 
} 

Ma questo URL per http://example.com/index.php/sales_order/view/ ... invece di http://example.com/index.php/amministrazione/sales_order/view/... Qualsiasi suggerimento?

UPD. config.xml:

<admin> 
    <routers> 
     <mymodule> 
      <use>admin</use> 
      <args> 
       <module>Foo_Mymodule</module> 
       <frontName>mymodule</frontName> 
      </args> 
     </mymodule> 
    </routers> 
</admin> 
+1

Dai un'occhiata alla configurazione corretta da [Come ottenere l'URL di una pagina/sezione in Magento admin] (http://stackoverflow.com/questions/6877683/how-to-get-the-url-of -a-page-section-in-magento-admin/6881211 # 6881211) – clockworkgeek

+0

@clockworkgeek Grazie. Si prega di guardare il mio post aggiornato. Sembra similare a quel caso di config.xml, vero? – silex

+0

Il tuo 'frontName' è' mymodule', ma se si copia l'esempio più da vicino sarà in grado di usare 'admin'. – clockworkgeek

risposta

7

Molto semplicemente è necessario sostituire sales_order/view con */sales_order/view. Il * significa utilizzare il router corrente che nell'amministratore è adminhtml.

Modifica
Per spiegare più in dettaglio mettere questo nella configurazione,

<admin> 
    <routers> 
     <adminhtml> 
      <args> 
       <modules> 
        <mymodule after="Mage_Adminhtml">Foo_Mymodule_Adminhtml</mymodule> 
       </modules> 
      </args> 
     </adminhtml> 
    </routers> 
</admin> 

Ora il valore */mymodule/index genererà un URL http://example.com/index.php/admin/mymodule/index che a sua volta carica il file Foo/Mymodule/controllers/Adminhtml/MymoduleController.php e cercare di trovare il metodo Foo_Mymodule_Adminhtml_MymoduleController::indexAction(). Se il metodo esiste, viene eseguito, altrimenti il ​​router admin prende il sopravvento e mostra un 404 o reindirizza al dashboard.

+0

Con '*/sales_order/view' punta a' http: // example.com/index.php/mymodule/sales_order/view/'. Sono anche sorpreso. – silex

+1

Grazie per il tuo commento sopra, ho completamente riscritto il routing e i percorsi nella configurazione del layout, quindi ora tutto funziona correttamente con '*/sales_order/view'. – silex

+0

Come hai riscritto le cose? Ho esattamente lo stesso problema! utilizzando **/sales_order/view * reindirizza anche a * index.php/mymodule/sales_order/view/* invece di * index.php/admin/sales_order/view/*. Grazie per l'aiuto! – EOB

Problemi correlati