何时使用“名称”,何时使用“ as”


26

我发现尝试使用该unsetChild方法时,有时必须使用'name'属性,而其他则使用'as'。看来,如果正常添加一个块,则使用“ as”,但是如果使用该append方法将其添加到一个块,则可能必须使用“ name”。这个假设正确吗?

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

Answers:


15

块始终可以由引用name。别名(as)用于简化块的长名称,唯一的区别是作用域。Name在页面和alias父块中必须是唯一的。


5
恐怕这都不是真的。在模板中,如果设置了别名,则无法按其名称引用块。您只能使用别名,至于别名的唯一性,事实恰恰相反-别名被引入以使无需更改模板即可呈现不同的块。
2013年

5
@JanTomka给出了别名的主要用途。应该指出的是,虽然“如果设置了别名集,则不能按其名称引用一个块”这一说法通常是正确的,但有一种方法名为getBlockHtml(),有时用于按名称呈现块。
benmarks

6

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

名称必须唯一,并且可以用于<reference>块,<remove>等。

例如(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')...


5

unsetChild尚未有人回答特定问题。有关方法儿童总是由别名,这是只知道家长和不同的名称,而不是全球唯一的参考子块。

但是,如果创建该块时未定义别名,则别名默认为名称。

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

别名给出as="..."如果块通过XML作为子块创建,或动作参数,如果他们搬来搬去或动态与类似的方法添加append()insert()setChild()

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.