Как перенаправить на действие в Magento? - PullRequest
0 голосов
/ 30 сентября 2010

HI

Я пытаюсь создать маршрутизатор для моего пользовательского модуля.

Я хотел бы получить доступ к действию hotsale контроллера индекса по url / hotsale. Поэтому я создаю следующий XML-маршрутизатор в файле config.xml моего модуля.

<hotsale>
 <use>standard</use>
 <args>
  <module>Moon_Products</module>
  <frontName>hotsale</frontName>
 </args>
</hotsale>

когда я обращаюсь к url ​​/ hotsale, он переходит к действию index контроллера index. Как мне сделать это, чтобы выполнить горячее действие?

Я пытался добавить горячую продажу, но это не сработало.

Я принял предложение Алана Шторма и закончил со следующим кодом.

public function indexAction()
{
    if($this->getRequest()->getRouteName() == 'hotsale'){

        $this->loadLayout();    

        $block = $this->getLayout()->createBlock(
            'Mage_Core_Block_Template',
            'my_block_name_here',
            array('template' => 'moon/hotsale.phtml')
        );


        $this->getLayout()->getBlock('root')->setTemplate('page/product-without-rightbar.phtml');
        $this->getLayout()->getBlock('content')->append($block);

        $this->renderLayout();

    }
}

1 Ответ

2 голосов
/ 30 сентября 2010

Маршрутизация внешнего интерфейса / магазина по умолчанию работает следующим образом

http://example.com/front-name/controller-name/action-name

Итак, когда вы идете на

http://example.com/hostsale

Ты действительно говоришь

http://example.com/hostsale/index/index

Понятие front-name немного абстрактно, но на практике оно связывает URL с конкретным модулем.

Итак, если у вас есть IndexController.php с методом с именем hotsaleAction, и вы хотите выполнить этот метод, используйте URL в форме

http://example.com/hotsale/index/hotsale 
...