마 젠토 2-블록 이름 대 이름


10

Magento 2 에서 몇 가지 작업을 수행했으며 내가 설치 한 일부 모듈 (frontend)을 덮어 썼습니다 .

그러나 오늘 나는 이전에 경험하지 못한 것을 발견했습니다. 내가 사용한 모듈에는 다음과 같은 블록이 있습니다.

<referenceBlock name="product.info.details">
    <block class="Vender\Module\Block\Catalog\Related" name="posts.tab" as="blog.posts"
               template="Vender_Module::catalog/posts.phtml" group="detailed_info">
    </block>
</referenceBlock>

이름을 설정합니다.

posts.tab

그런 다음 as 를 사용하여 다음을 통해 호출 할 수 있습니다.

as = "blog.posts"

as 이름을 사용하여 제거 할 블록을 참조하려고 할 때 페이지에서 블록을 제거 하지 않은 것으로 나타났습니다.

<referenceBlock name="product.info.details">
    <referenceBlock as="blog.posts" remove="true"/>
</referenceBlock>

그래서 난 (이것은 다른 곳에서 이름이 변경되지 않았거나 posts.tab 이름을 사용하지 않은 단지 넣다) 프론트 엔드에 페이지가 실제로 호출 무엇을 보러 갔다 - 블록 이름으로 호출되고 posts.tab 잘되는, 블록을 참조하여 제거 할 수 있습니다. 잘 작동했습니다.

그러나 내 질문은 왜 블록을 as 를 사용하여 가져 오는 대신 name 을 사용하여 가져 오는 것이 아닌가 입니다.

두 번째로 as 의 요점은 분명히 블록은 어쨌든 충돌하는 이름을 가질 수 없으며 고유해야하지만 완전히 잘못되었을 수 있기 때문입니다.

답변:


2

이 경우 as 속성이 쓸모없는 것처럼 보입니다 (다른 곳에서 사용하지 않는 한), 이름이나 별칭을 통해 호출 된 경우 차이가 있다고 생각하지 않으므로 사용할 항목을 선택하는 것은 개발자의 책임입니다. 별칭이 설정되어 있으면를 호출 할 때이를 사용해야합니다 getChildHtml.

개인적으로 나는 별칭을 사용하여 긴 블록 이름을 줄이거 나 템플릿을 통해 렌더링 할 때 쉽게 읽을 수 있도록합니다. 예를 들어 checkout.header.logo.text그대로 사용 logo.text하고 header.logo.text이미 사용해야하는 경우 logoText모든 블록 에서 별칭을 사용할 수 있습니다 . 동일한 레이아웃 핸들과 참조에 설정되어 있지 않으면 동일한 별칭을 사용하는 다른 블록의 렌더링에는 영향을 미치지 않습니다.

TL : DR 큰 차이는 없지만 가독성 / 단축 이름이 더 낫습니다.

노트

이 M1 질문에는 'name'사용시기 및 'as'사용시기에 대한 정보가 조금 더 있습니다.

이것이 M2에 적용되는지 확실하지 않지만 M1에는 속성 alias을 사용하는 호출 된 인수가 하나 이상 as있었으며 블록 삽입 또는 설정 해제와 관련이 있다고 생각합니다.

Fabian Schmengler에 따르면 : "별칭을 정의하지 않고 블록을 만든 경우 별명이 기본적으로 이름이됩니다." 그것은 M1을 언급하고 있지만 M2에도 동일한 내용이 적용되는 것으로 가정합니다.


방금 2.3.1에서 블록에 "as"별칭이 있으므로 이름으로 ChildHtml을 가져올 수 없습니다. 별칭을 삭제 한 후에 만 ​​템플릿에서 블록을 얻을 수 있습니다.
TheKitMurkit

좋은 점 @TheKitMurkit- "별명을 설정 한 경우 getChildHtml을 호출 할 때이를 사용해야합니다."라는 답변을 조금 추가했습니다. 감사.
벤 크룩
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.