Коли використовувати "ім'я" та коли використовувати "як"


26

Я виявив, що при спробі використання unsetChildметоду іноді доводиться використовувати атрибут 'name' та інші 'як'. Здається, що якщо блок додається нормально, ви використовуєте "як", але якщо він доданий до блоку appendметодом, можливо, вам доведеться використовувати "ім'я". Чи правильне це припущення?

Які міркування за цим і чи є стандартний спосіб зрозуміти, який атрибут слід використовувати?

Відповіді:


15

На блок завжди можна посилатися на блок name. Псевдонім ( as) використовується для спрощення довгої назви блоку, і єдиний відрізняється від області застосування. Nameмає бути унікальним у межах сторінки та aliasв батьківському блоці.


5
Боюся, що нічого з цього не відповідає дійсності. У шаблоні ви не можете посилатися на блок за його іменем, якщо у нього встановлений псевдонім. Ви можете використовувати лише псевдонім. Що стосується унікальності псевдоніму, то все навпаки - псевдонім був введений, щоб зробити можливим виведення іншого блоку без зміни шаблону.
Ян Томка

5
@JanTomka дав головне використання псевдонімів. Слід зазначити, що хоча твердження про те, що "ви не можете посилатись на блок за його ім'ям, якщо у нього встановлений псевдонім", як правило, є іменем, getBlockHtml()який іноді використовується для візуалізації блоків по імені.
орієнтири

6

Коли ви використовуєте як , ви можете викликати $ this-> getChildHtml ("as_value") на шаблоні phtml.

Ім'я повинно бути унікальним, і може бути використано для <посилання> блоки, <видалити> і т.д.

Наприклад (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>

Якщо ви відкриєте каталог / продукт / 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().

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.