当前位置: 首页>>建站开发>>正文


何时使用’name’以及何时使用’as’

webfans 建站开发 , , , , 去评论

问题描述

我发现在尝试使用unsetChild方法时,有时我必须使用’name’属性和其他’as’。似乎如果正常添加块,则使用’as’,但如果使用append方法将其添加到块中,则可能必须使用’name’。这个假设是否正确?

这背后的原因是什么,是否有一种标准的方法来理解你应该使用哪个属性?

最佳解决方法

name始终可以引用块。别名(as)用于简化块的长名称,仅与范围不同。 Name必须在页面内是唯一的,并且在父块中必须是alias

次佳解决方法

当您使用as时,您可以在phtml模板上调用$ this-> getChildHtml(“as_value”)。

名称必须是唯一的,并且可以用于<参考>块,<删除>等

例如(catalog.xml):

<block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
    <block type="catalog/product_view_media" name="product.info.media" as="media" template="catalog/product/view/media.phtml"/>
</block>

如果您打开catalog /product /view.phtml,您会看到:

<div class="product-img-box">
    <?php echo $this->getChildHtml('media') ?>
</div>

你看? as = “media”,然后是$ this-> getChildHtml(‘media’)……

第三种解决方法

目前还没有人回答有关unsetChild的具体问题。与块的子节点相关的方法总是通过别名引用子块,这些子块仅为父节点所知,并且与名称不同,不是全局唯一的。

但是,如果在未定义别名的情况下创建块,则别名默认为名称。

简而言之,如果子块具有显式别名,则必须使用别名。如果没有,请使用名称。

如果通过XML将块创建为子块,则通过as="..."给出别名,如果它们被移动或通过append()insert()setChild()等方法动态添加,则为动作参数。

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2027.html,转载请务必附带本地址声明。