从Observer更新布局
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Observer更新布局相关的知识,希望对你有一定的参考价值。
我正在使用滑块Magento,我正在尝试从Observer生成和更新我的布局:
事件:controller_action_layout_load_before
这是我的观察者方法:
$myXml="<".$page.">";
$myXml.='<reference name="'.$posH.'">';
$myXml.='<block type="sliderboard/slider" name="sliderboard" '.$posV.'="-" template="sliderboard/myview.phtml"/>';
$myXml.='</reference>';
$myXml.="</".$page.">";
$layout = $observer->getEvent()->getLayout();
//$layout=Mage::getSingleton('core/layout');
//Zend_Debug::dump($myXml); die();
$layout->getUpdate()->addUpdate($myXml);
$layout->getUpdate()->load();
$layout->generateXml();
$layout->generateBlocks();
事实是,这是我从“$ myXML”变量得到的:
<cms_page>
<reference name="content">
<block type="sliderboard/slider" name="sliderboard" after="-" template="sliderboard/myview.phtml"/>
</reference>
</cms_page>
它不起作用!!但是当我尝试在我的布局中复制/粘贴这个xml时,它可以工作! Xml代码是正确的!我需要帮助 谢谢 !
答案
$layout->getUpdate()->addUpdate($myXml);
addUpdate()不能与“Actions”一起使用,所以我们只能放置这部分布局:
<reference name="content">
<block type="myblock/block" name="sliderboard" after="-" template="mytemp/tmplate.phtml"/>
</reference>
并选择(cms,类别和产品)我们使用:
$action = $observer->getEvent()->getAction();
$fullActionName = $action->getFullActionName();
我们将$ fullActionName比较为:cms_index_index / catalog_category_view / catalog_product_view
如果它等于我们需要的,我们继续:
$page="cms_index_index";
switch ($slider->getSldPage()){
case 'product': $page="catalog_product_view";
break;
case 'category': $page="catalog_category_view";
break;
}
$myXml.='<reference name="'.$posH.'">';
$myXml.='<block type="sliderboard/slider" name="sliderboard" '.$posV.'="-" template="sliderboard/myview.phtml"/>';
$myXml.='</reference>';
$action = $observer->getEvent()->getAction();
$fullActionName = $action->getFullActionName();
$layout = $observer->getEvent()->getLayout();
if ($fullActionName==$page)
{
$layout->getUpdate()->addUpdate($myXml);
$layout->generateXml();
}
希望这会有所帮助:)
如果你有一个想法,我现在正试图选择我将展示的类别和产品。
以上是关于从Observer更新布局的主要内容,如果未能解决你的问题,请参考以下文章
ViewPager 未从代码、android、eclipse 更新
如何通过单击片段内的线性布局从片段类开始新活动?下面是我的代码,但这不起作用
Live Data Observer On 按钮 屏幕旋转时单击
在 TabLayout 和 ViewPager2 中执行异步任务后更新具有相同布局的多个片段