Magento:从控制器重定向到phtml页面?

时间:2012-07-20 13:50:21

标签: magento redirect

我有一个控制器,从那里我想重定向到某个phtml页面。该页面存储在 app \ design \ frontend \ default \ mystuff \ template \ catalog \ product \ view \ myphtml.phtml 中。

如何从控制器重定向到此页面?

谢谢!

1 个答案:

答案 0 :(得分:3)

最新:OP表示需要在自己的

上显示此模板

如果您想显示 模板,可以在控制器操作中执行此操作:

public yourAction()
{
    $block = $this->getLayout()->createBlock('core/template')
                                   ->setTemplate('catalog/product/view/myphtml.phtml');

    $this->getResponse()->setBody(
        $block->toHtml()
    );
}

您还可以使用布局XML,在控制器中启动:

public yourAction()
{
    $this->loadLayout(false)->renderLayout(); //false keeps default handle from loading
}

在(理想情况下)模块的布局XML中,执行:

<?xml version="1.0"?>
<layout>
    <yourmodule_yourcontroller_youraction>
        <block type="core/template" template="catalog/product/view/myphtml.phtml" output="toHtml" />
    </yourmodule_yourcontroller_youraction>
</layout>

如果您需要知道完整的操作名称(yourmodule_yourcontroller_youraction),则可以通过echo $this->getFullActionName();在控制器操作中获取该信息。

最后,如果您尝试加载看起来像标准产品的产品视图页面,但是根据您自己的操作,您可以执行以下操作:

public yourAction()
{
    $this->loadLayout()->renderLayout();
}

然后在你的布局XML:

<?xml version="1.0"?>
<layout>
    <yourmodule_yourcontroller_youraction>
        <reference name="content">
            <block type="core/template" template="catalog/product/view/myphtml.phtml" name="your.block" />
        </reference>
    </yourmodule_yourcontroller_youraction>
</layout>

上一篇:OP表示他/她想要更改用于产品视图块的模板,并相应地回答。

Magento的布局XML系统可以很好地处理这项任务。由于您是最终实施者,您可以使用名为 local.xml 的特殊布局文件,该文件应放在您的自定义主题文件夹中(可能是app/design/frontend/default/mystuff/layout/)。

该文件应如下所示:

<?xml version="1.0"?>
<layout>
    <catalog_product_view>
        <reference name="product.info">
            <action method="setTemplate">
                <tpl>catalog/product/view/myphtml.phtml</tpl>
            </action>
        </reference>
    </catalog_product_view>
</layout>

您的布局说明将与所有其他说明合并和处理。作为参考,product.info块在 catalog.xml 布局文件中建立。上述说明可以用以下简单的英文说明:

  

对于完整操作名称catalog_product_view标识的呈现范围,以及名称为product.info的布局中标识的块实例,请使用参数{{1}调用其setTemplate()方法}。