'name'사용시기 및 'as'사용시기


26

unsetChild메소드 를 사용하려고 할 때 때로는 'name'속성과 다른 'as'를 사용해야한다는 것을 알았습니다. 블록이 정상적으로 추가되면 'as'를 사용하지만 append방법을 사용하여 블록에 추가 하면 'name'을 사용해야 할 수도 있습니다. 이 가정이 맞습니까?

이에 대한 추론은 무엇이며 어떤 속성을 사용해야하는지 이해하는 표준적인 방법이 있습니까?

답변:


15

블록은 항상로 참조 할 수 있습니다 name. 별명 ( as)은 블록의 긴 이름을 단순화하는 데 사용되며 범위와 다른 점만 다릅니다. Name페이지와 alias상위 블록 내에서 고유해야합니다 .


5
나는 그 어느 것도 사실이 아니라는 것을 두려워합니다. 템플릿에서 별칭이 설정되어 있으면 이름으로 블록을 참조 할 수 없습니다. 별칭 만 사용할 수 있습니다. 별칭의 고유성에 대해서는 그 반대가 사실입니다. 템플릿을 변경하지 않고 다른 블록을 렌더링 할 수 있도록 별칭이 도입되었습니다.
Jan Tomka

5
@JanTomka는 별칭을 주로 사용했습니다. "별명 세트가있는 경우 이름으로 블록을 참조 할 수 없습니다" 라는 명령문 이 일반적으로 적용 getBlockHtml()되지만 이름으로 블록을 렌더링하는 데 사용되는 이름 지정된 메소드가 있다는 점을 지적해야합니다 .
benmarks

6

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') ...


5

unsetChild아직 특정 질문에 아무도 답변 하지 않았습니다. 블록의 자식 과 관련된 메서드 는 항상 별칭으로 자식 블록을 참조합니다. 별칭은 부모에게만 알려져 있으며 이름과는 달리 전 세계적으로 고유하지 않습니다.

그러나 별칭을 정의하지 않고 블록을 만든 경우 별칭의 이름이 기본값이됩니다.

즉, 자식 블록에 명시적인 별칭이 있으면 별칭을 사용해야합니다. 그렇지 않은 경우 이름을 사용하십시오.

별명 주어진다 as="..."들이 주위를 이동하거나 같은 동적 방법으로 추가 된 경우, 또는 동작 파라미터가 블록을 통해 XML 하위 블록으로 만들어진 경우 append(), insert()또는 setChild().

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.