Как получить URL страницы / раздела в админке Magento - PullRequest
3 голосов
/ 29 июля 2011

Не могу найти однозначного ответа на этот вопрос. Как получить URL-адрес страницы в админке администратора?

Например, допустим, у меня есть модуль, который использует контроллер с именем фронта mymodule . Если я позвоню:

$this->getUrl('mymodule/controller/action')

Я получаю:

http://mydomain.com/index.php/mymodule/controller/action

Это не работает, потому что в нем нет имени администратора.

Я нашел эту тему , в которой упоминается это:

Mage::helper("adminhtml")->getUrl();

Однако это также не добавляет имя фронта администратора к URL-адресу ... так какой смысл передавать его через помощника adminhtml? В ветке также сказано, что вы можете использовать это, чтобы получить имя администратора:

Mage::getConfig()->getNode('admin/routers/adminhtml/args/frontName');

Так я должен создать правильный URL, используя эти 2 метода, или есть более простой способ сделать это? Я бы подумал, что должен быть легкий путь, но я просто не могу понять это.

Спасибо:)

Ответы [ 2 ]

5 голосов
/ 30 июля 2011

Вы действительно хотите получить URL через $ this-> getUrl ('mymodule / controller / action'). Однако путаница ведет к неправильному пониманию системы маршрутизации. Тег admin указывает на использование маршрутизатора admin, а mymodule указывает имя, которое используется в URL. По сути, вы создаете свое собственное имя. Чтобы использовать имя администратора, вам необходимо использовать перезапись контроллера, чтобы выполнить его. Примерно так:

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

Для этого нужно настроить систему маршрутизации так, чтобы она смотрела на вашем контроллере для соответствующего действия, но только если она не находит его на контроллере Mage_Adminhtml.

Обратите внимание, что при использовании этого переписывания вам нужно будет использовать «adminhtml» вместо «mymodule» в вызове getURL, так как ваши URL-адреса будут попадать под настройку front name, заданную adminhtml.

То, что вы выяснили, - это правильное решение для того, чтобы заставить работать ваше собственное имя, и оно будет работать просто отлично, если вам не нужно использовать имя администратора. :)

1 голос
/ 29 июля 2011

Я думаю, что понял это, но, пожалуйста, прокомментируйте или добавьте свой собственный ответ, если я ошибаюсь.Моей первой проблемой было то, что мой config.xml был настроен неправильно.У меня было <frontend> вместо <admin> под элементом <routers>.У меня также было <use>standard</use> вместо <use>admin</use>.Ошибка копирования-вставки;)

Тем не менее, это, похоже, не изменило возвращаемый URL, но, похоже, это не имеет значения.Теперь он правильно работает с моим контроллером, хотя URL, на который я перенаправляю, не содержит имени администратора.Так что я немного смущен этим, но, тем не менее, это работает.

...