Как использовать getUrl () в Magento для ссылки на другой модуль? - PullRequest
5 голосов
/ 05 сентября 2011

Мой модуль в админпанели Magento имеет URL-адрес типа http://example.com/index.php/mymodule/... и содержит пользовательскую сетку с заказами.Я хочу перенаправить пользователя на стандартную страницу «Вид заказа», когда он нажимает на строку сетки.

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

Но этот URL указывает на http://example.com/index.php/sales_order/view/... вместо http://example.com/index.php/admin/sales_order/view/... Любойпредложение?

UPD. config.xml :

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

1 Ответ

7 голосов
/ 05 сентября 2011

Проще просто заменить sales_order/view на */sales_order/view.* означает использование текущего маршрутизатора, который в админке имеет значение adminhtml.

Редактировать
Чтобы объяснить более подробно, укажите это в вашей конфигурации,

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

Теперь значение */mymodule/index сгенерирует URL http://example.com/index.php/admin/mymodule/index, который, в свою очередь, загрузит файл Foo/Mymodule/controllers/Adminhtml/MymoduleController.php и попытается найти метод Foo_Mymodule_Adminhtml_MymoduleController::indexAction().Если метод существует, он запускается, в противном случае административный маршрутизатор вступает во владение и показывает 404 или перенаправляет на панель управления.

...