2011-09-05 13 views
5

Mi módulo en Magento adminpanel tiene una URL como http://example.com/index.php/mymodule/ ... y contiene cuadrícula personalizada con las órdenes. Quiero redirigir al usuario a la página estándar "Vista de pedidos" cuando hace clic en una fila de la grilla.¿Cómo se usa getUrl() en Magento para referirse a otro módulo?

puntos
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; 
} 

Pero este URL para http://example.com/index.php/sales_order/view/ ... en lugar de http://example.com/index.php/administrador/SALES_ORDER/view/... Cualquier sugerencia?

UPD. config.xml:

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

Eche un vistazo a la configuración correcta de [Cómo obtener la URL de una página/sección en Magento admin] (http://stackoverflow.com/questions/6877683/how-to-get-the-url-of -a-page-section-in-magento-admin/6881211 # 6881211) – clockworkgeek

+0

@clockworkgeek Gracias. Por favor mira mi publicación actualizada. Se ve similar a ese caso de config.xml, ¿no? – silex

+0

Su 'frontName' es' mymodule', pero si copia el ejemplo más de cerca, podrá usar 'admin' en su lugar. – clockworkgeek

Respuesta

7

Simplemente se necesita para reemplazar sales_order/view con */sales_order/view. El * significa usar el enrutador actual que en el administrador es adminhtml.

Editar
Para explicar con más detalle a poner esto en su configuración,

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

Ahora el valor */mymodule/index generará una URL http://example.com/index.php/admin/mymodule/index que a su vez se carga el archivo Foo/Mymodule/controllers/Adminhtml/MymoduleController.php y tratar de encontrar el método Foo_Mymodule_Adminhtml_MymoduleController::indexAction(). Si el método existe, se ejecuta; de lo contrario, el enrutador de administración toma el control y muestra un 404 o redirecciona al panel.

+0

Con '*/sales_order/view' apunta a' http: // example.com/index.php/mymodule/sales_order/view/'. También estoy sorprendido. – silex

+1

Gracias por su comentario anterior, he reescrito completamente el enrutamiento y las rutas en la configuración del diseño, por lo que todo funciona bien ahora con '*/sales_order/view'. – silex

+0

¿Cómo reescribiste las cosas? ¡Tengo exactamente el mismo problema! el uso de **/sales_order/view * también me redirige a * index.php/mymodule/sales_order/view/* en lugar de * index.php/admin/sales_order/view/*. ¡Gracias por tu ayuda! – EOB

Cuestiones relacionadas