我有:
这就是我被困的地方......如果我转储该块,我可以看到我新添加的总数,但是它没有显示在HTML中。当然必须有一种方法来“刷新”HTML或其他东西,以便它包含新添加的数据。这是我到目前为止的代码......
<?php
class Company_Extension_Model_Totals {
public function blockToHtmlAfter(Varien_Event_Observer $observer){
$block = $observer->getBlock();
$class = get_class($block);
if($class == 'Mage_Adminhtml_Block_Sales_Order_Totals'){
$transport = $observer->getTransport();
$block->addTotal(new Varien_Object(array(
'code' => 'newmethod',
'value' => '10',
'base_value'=> '10',
'label' => 'New Method',
'area' => 'footer'
)), 'last');
#$transport->setHtml($output);
}
}
}
?>
答案 0 :(得分:0)
请尝试以下代码:
public function handleBlockOutput($observer)
{
/* @var $block Mage_Core_Block_Abstract */
$block = $observer->getBlock();
if ($block instanceof Mage_Catalog_Block_Product_List) {
$transport = $observer->getTransport();
$html = $transport->getHtml();
if (strpos($html, "amasty-layered-navigation") === FALSE){
$html = some_custom_logic();
$transport->setHtml($html);
}
}
}
因此观察者允许修改HTML,而不是块。您可以获取块HTML并为其添加字符串。它会对你有用吗?
您还可以使用布局来调用块函数:
<block type ="amfinder/form" name="amasty-products-finder">
<action method="setId"><id>1</id></action> <!-- with params -->
<action method="apply" /> <!-- without params -->
</block>