【发布时间】:2012-05-14 03:20:49
【问题描述】:
我想了解 Magento 块,因此我阅读了 Mage_Core_Block_Abstract 的 Magento 1.5 代码。
insert($block,,,$alias) 方法 首先调用 setChild($alias,$block) 方法,该方法构建一个 _children 数组(value=$block, key=$alias), 然后构建一个 _sortedChildren 数组(value=$name, key=number)。
我无法理解的是 unsetChild($alias) 方法,在取消设置 _children[$alias] 项后……试图通过 array_search($alias,_sortedChildren) 找到对应的 _sortedChildren 项……嗯,_sortedChildren 的值是块名称,而不是别名!
unsetChild 是否适用于别名不等于其名称的孩子?
【问题讨论】:
-
可能是bug,可能在更多新版本中修复?
-
也许...有人可以检查更新的版本吗?
-
如果是bug,我认为出在insert方法上,而不是unsetChild方法上。要问的问题是:使用块名称作为 _sortedChildren 数组的值是否正确?为什么不是块本身,就像 _children 数组一样?
-
为什么不将当前块别名作为 _sortedChildren 数组的值,就像 _children 的键一样?然后, unsetChild 的代码将保持不变。另一方面,排序后的 getChildHtml('') 的代码应该使用 _children 数组来抓取块。
-
... 和 core/text_list _toHtml() 方法也应该更新为使用 _children 数组来抓取块实例
标签: magento