Magento 2 - blok adı vs isim olarak


10

Magento 2'de biraz iş yapıyorum ve yüklediğim bazı modüllerin üzerine yazıyorum (ön uçta).

Ancak bugün daha önce hiç karşılaşmadığım bir şeyle karşılaştım. Kullandığım modülün içinde aşağıdakileri içeren bir blok var:

<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>

Adını belirler:

posts.tab

ve sonra kullandığı olarak bunun üzeri olarak dinlenebilmesi için:

= "Blog.posts" olarak

Ben adı olarak kullanılarak kaldırılacak blok başvurmaya çalıştığımda ben onu sayfadan kaldırma olmadığını fark ettim:

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

böylece sayfanın aslında ön uçta ne aradığını görmeye gittim (sadece başka bir yerde yeniden adlandırıldıysa veya posts.tab adını kullanmıyordu) - blok adı posts.tab ile çağrılıyor , ki bu iyi ben sadece kaldırmak için bu blok referans olabilir gibi. Güzel oldu.

Ama sorum şu ki, neden blok olarak ve bunun yerine adı kullanarak çekilmiyor ?

İkincisi anlamı nedir olarak ama tamamen yanlış olabilir - Açıkçası blokları yine çelişkili adlara sahip olamaz ve benzersiz olmalıdır, çünkü.

Yanıtlar:


2

Bu örnekte as niteliği işe yaramaz gibi görünüyor (başka bir yerde kullanılmadıkça), ad veya takma adla çağrıldığında bir fark yarattığını düşünmüyorum, bu yüzden ne kullanacağınızı seçmek geliştiriciye kalmış - sadece unutmayın bir takma ad ayarlanırsa, arama yaparken bunu kullanmanız gerekir getChildHtml.

Şahsen takma adı yalnızca uzun bir blok adını kısaltmak ve / veya bir şablon aracılığıyla oluştururken kolayca okunabilir hale getirmek için kullanacağım. Örneğin checkout.header.logo.text, logo.textve header.logo.textolarak zaten kullanılması gerekiyorsa, logoTexttüm bloklarda diğer adı kullanabilirsiniz . Bu, aynı mizanpaj tutamacında ve referansta ayarlanmadığı sürece aynı takma adı kullanan diğer blokların oluşturulmasını etkilemez.

TL: DR Çok fazla bir fark yaratmıyor, daha çok okunabilirlik / kısaltma isimleri için.

notlar

Bu M1 sorusunun biraz daha fazla bilgisi var - 'name' ne zaman ve 'as' ne zaman kullanılır

Bu M2 için geçerli olup olmadığından emin değilim ama M1'de özniteliği aliaskullanan en az bir argüman vardı, asbence blok ekleme veya unsetting ile ilgili.

Fabian Schmengler'e göre: "Blok bir takma ad tanımlamadan oluşturulduysa takma ad varsayılan olarak kullanılır." Bu M1'e atıfta bulunsa da, aynı şeyin M2 için de geçerli olduğunu düşünüyorum.


2.3.1'de, blok olarak "takma ad" olduğu için adıyla ChickHtml'yi alamadım. Ancak diğer adı sildikten sonra bloğu bir şablonda alabilirim.
TheKitMurkit

İyi bir nokta @TheKitMurkit - Cevabım için "bir takma ad ayarlanmışsa getChildHtml çağrılırken bunu kullanmanız gerekecek" ifadesini ekledim. Teşekkürler.
Ben Crook
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.