目前,我正在使用AJAX-Controller完成扩展。
AjaxController.php - 控制器 Lager.php - 扩展本身 - 具有HTML输出
扩展程序Lager.php仅在产品视图页面上运行,通过base / default / layouts中的catalog.xml设置样式并显示在pricebox下。
因此。 AjaxRequest由另一个不重要的扩展程序发送,它也像AjaxController一样工作正常。但这是一个问题。在AjaxController.php中,我有一个命令来执行Lager.php中的一个函数。它确实和我能够看到的萤火虫一样,他得到了正确的响应(HTML输出),但我认为布局是错误的。 ..新的Html不会出现在产品视图的任何地方。
AjaxController.php(工作正常,但没有HTML输出,或者没有样式..导致firebug中的html输出中没有包含css了):
<?php
require_once "Mage/Catalog/controllers/ProductController.php";
class Lager_Lager_AjaxController extends Mage_Catalog_ProductController
{
public function indexAction()
{
$this->loadLayout();
$this->renderLayout();
}
public function refreshAction()
{
$selected = $this->getRequest()->getParam('selected');
if($selected == 'true')
{
$productId = $this->getRequest()->getParam('productid');
if($productId)
{
$block = $this->getLayout()->getBlockSingleton('lager/lager')->runLager($productId); //does html output
}
}
else
{
}
}
}
?>
ajax实现的config.xml部分:
<frontend>
<routers>
<lager>
<use>standard</use>
<args>
<module>Lager_Lager</module>
<frontName>lager</frontName>
</args>
</lager>
</routers>
</frontend>
扩展实现的catalog.xml部分:
<block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
<!--
<action method="addReviewSummaryTemplate"><type>default</type><template>review/helper/summary.phtml</template></action>
<action method="addReviewSummaryTemplate"><type>short</type><template>review/helper/summary_short.phtml</template></action>
<action method="addReviewSummaryTemplate"><type>...</type><template>...</template></action>
BEGIN LAGER IMPLEMENTATION -->
<block type="lager/lager" name="lager" template="lager/lager.phtml" /> <!-- Lager Einbindung -->
<lager_ajax_refresh>
<block type="lager/lager" name="lager" output="toHtml" template="lager/lager.phtml" />
</lager_ajax_refresh>
<!-- END -->
<block type="catalog/product_view_media" name="product.info.media" as="media" template="catalog/product/view/media.phtml"/>
<block type="core/text_list" name="alert.urls" as="alert_urls" translate="label">
<label>Alert Urls</label>
</block>
<action method="setTierPriceTemplate"><template>catalog/product/view/tierprices.phtml</template></action>
所以Ajax Controller没有使用在catalog.xml中实现的扩展的布局配置。