【问题标题】:How to load a magento view (.phtml) file from a controller如何从控制器加载 magento 视图 (.phtml) 文件
【发布时间】:2011-07-27 14:53:39
【问题描述】:

我正在尝试加载购物车侧边栏的渲染版本,我打算通过 ajax 加载它...我一直在搜索,似乎最好的方法是创建一个自定义模块来处理我的所有阿贾克斯请求。我创建了一个自定义模块,一切似乎都在工作,但是当我显示 sidebar.phtml 时,它没有正确呈现。它显示好像购物车中没有任何东西。 (我假设它只是试图在不使用任何会话信息的情况下读取文件)。我搜索了一堆,但似乎与我正在尝试做的事情无关。

这是我在我的自定义控制器中用来加载 phtml 文件的代码,它本质上是 checkout/cart/sidebar.phtml 文件的副本和过去。

$layout = $this->loadLayout();


$block = $this->getLayout()->createBlock(
'Mage_Core_Block_Template',
'PPWD_Custom',
array('template' => 'custom/custom.phtml')
);
echo $block->toHtml(); 

谢谢

【问题讨论】:

    标签: php magento cart shopping


    【解决方案1】:

    问题在于块类型不正确。你应该使用Mage_Checkout_Block_Cart_Sidebar 而不是Mage_Core_Block_Template。像这样:

    $this->getLayout()->createBlock(
        'checkout/cart_sidebar',
        'PPWD_Custom',
        array('template' => 'custom/custom.phtml')
    );
    

    【讨论】:

    • 仍然没有运气,我尝试加载该代码,但它什么也没输出。是否可以从这个控制器中加载原始的“渲染”sidecart.phtml 文件(通过渲染我的意思是让它实际显示购物车中的内容,而不是总是说它是空的)?再次感谢
    • 在与您的自定义控制器对应的布局文件中,您应该添加 cart_sidebar 块定义,例如 app/design/frontend/base/default/layout/checkout.xml。您可以在此处查看为不同产品类型添加渲染器。
    • 好吧,我也按照建议尝试过,但仍然没有。我在link 上发布了完整的controllerindex 函数和布局文件,我不知道我到底哪里出错了。自定义模板目录基本上只是 *theme*/template/checkout 的副本。
    • 感谢您的帮助,我使用本教程解决了这个问题link 我误解了 magento 如何加载主要与布局文件有关的 phtml 文件的一些基本原理。再次感谢您的帮助
    • 如果你有机会甚至还有代码,很高兴看到它。我有同样的问题。干杯
    猜你喜欢
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 2013-03-06
    • 2014-03-03
    • 1970-01-01
    相关资源
    最近更新 更多