在确定适用于所有事物的正确处理方式方面,我总是遇到挑战,因此请在这里与我联系。我已经搜索了Google,SE并尝试了多种变体,但没有运气。(是的,我在这里使用了以下技术:调试布局加载,但是不确定如何处理输出。
问题:控制器加载。布局没有。
当我访问以下页面时 localhost/magento/mymodule/ajax/cart
它回显“这里!”。getLayouts的var_dump生成:
array(4) {
[0]=> string(17) "mymodule_ajax_cart"
[1]=> string(13) "STORE_default"
[2]=> string(24) "THEME_frontend_theme_theme"
[3]=> string(19) "customer_logged_out"
}
编码
自定义控制器:
app/code/local/mycompany/mymodule/controllers/AjaxController.php
class Mycompany_Mymodule_AjaxController extends Mage_Core_Controller_Front_Action
{
public function cartAction() {
echo 'HERE!';
$this->loadLayout('mymodule_ajax_cart');
var_dump($this->getLayout()->getUpdate()->getHandles());
$this->renderLayout();
}
}
配置文件:
app/code/local/mycompany/mymodule/etc/config.xml
<config>
<modules>
<mycompany_mymodule>
<version>1.0.0</version>
</mycompany_mymodule>
</modules>
<global>
<helpers>
<mymodule>
<class>Mycompany_Mymodule_Helper</class>
</mymodule>
</helpers>
</global>
<frontend>
<routers>
<mymodule>
<use>standard</use>
<args>
<module>Mycompany_Mymodule</module>
<frontName>mymodule</frontName>
</args>
</mymodule>
</routers>
<layout>
<updates>
<mymodule>
<file>mymodule.xml</file>
</mymodule>
</updates>
</layout>
</frontend>
</config>
布局文件位于
app/design/frontent/base/default/layout/mymodule.xml
<?xml version="1.0"?>
<layout>
<mymodule_ajax>
<block type="core/text_list" name="content" output="toHtml" as="content" />
</mymodule_ajax>
<mymodule_ajax_cart>
<reference name="content">
<block type="core/template" template="mymodule/ajaxcart.phtml" />
</reference>
</mymodule_ajax_cart>
</layout>
最后,模板文件位于
app/design/frontend/theme/theme/template/mymodule/ajaxcart.phtml
<div style="border: 2px solid red">
Hello world
</div>
请指教。我知道我缺少明显的东西,但是我一生都找不到。
mycompany_mymodule
(第一个句柄)声明模块。每个带前缀mymodule
而不带mycompany_
前缀的xml标记都是错误的恕我直言。你应该改变所有的标签名称有前缀mycompany_
之前mymodule
。
mycompany_mymodule
在每个句柄中使用前缀吗?(mycompany_mymodule_ajax
例如)。