2011-09-05 7 views
5

Mój moduł w Magento adminpanel ma adres URL podobny do http://example.com/index.php/mymodule/ ... i zawiera niestandardową siatkę z zamówieniami. Chcę przekierować użytkownika do standardowej strony "Widok zamówienia", gdy kliknie wiersz siatki.Jak korzystać z getUrl() w Magento, aby odwołać się do innego modułu?

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

Ale ten URL do http://example.com/index.php/sales_order/view/ ... zamiast http://example.com/index.php/administratora/sales_order/view/... Wszelkie sugestie?

UPD. config.xml:

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

Spójrz na prawidłową konfigurację z [Jak uzyskać URL strony/sekcji w administratorze Magento] (http://stackoverflow.com/questions/6877683/how-to-get-the-url-of -a-page-section-in-magento-admin/6881211 # 6881211) – clockworkgeek

+0

@clockworkgeek Dziękuję. Proszę spojrzeć na mój zaktualizowany post. Wygląda to podobnie do tego pliku config.xml, nieprawdaż? – silex

+0

Twoje 'frontName' to' mymodule', ale jeśli będziesz dokładniej kopiować przykład, będzie mógł zamiast tego użyć 'admin'. – clockworkgeek

Odpowiedz

7

Po prostu trzeba wymienić sales_order/view z */sales_order/view. * oznacza użycie bieżącego routera, który w administratorze to adminhtml.

Edit
Aby wyjaśnić bardziej szczegółowo umieścić to w config,

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

Teraz wartość */mymodule/index wygeneruje URL http://example.com/index.php/admin/mymodule/index co z kolei spowoduje załadowanie pliku Foo/Mymodule/controllers/Adminhtml/MymoduleController.php i spróbować znaleźć metodę Foo_Mymodule_Adminhtml_MymoduleController::indexAction(). Jeśli metoda istnieje, jest uruchamiana, w przeciwnym razie router administratora przejmie i wyświetli 404 lub przekieruje do pulpitu.

+0

Z '*/sales_order/view' wskazuje na' http: // example.com/index.php/mymodule/sales_order/view/'. Jestem także zaskoczony. – silex

+1

Dzięki za komentarz powyżej, całkowicie przepisałem routing i ścieżki w konfiguracji układu, więc wszystko działa dobrze teraz z '*/sales_order/view'. – silex

+0

W jaki sposób przepisałeś coś? Mam dokładnie ten sam problem! za pomocą **/sales_order/view * przekierowuję mnie również do * index.php/mymodule/sales_order/view/* zamiast * index.php/admin/sales_order/view/*. Dzięki za pomoc! – EOB

Powiązane problemy