Khi nào nên sử dụng 'tên' và khi nào nên sử dụng 'như'


26

Tôi đã thấy rằng khi cố gắng sử dụng unsetChildphương thức này, đôi khi tôi phải sử dụng thuộc tính 'name' và các thuộc tính khác 'as'. Có vẻ như nếu một khối được thêm bình thường, bạn sử dụng 'as' nhưng nếu nó được thêm vào một khối bằng appendphương thức, bạn có thể phải sử dụng 'tên'. Giả định này có đúng không?

Lý do đằng sau điều này là gì và có một cách tiêu chuẩn để hiểu bạn nên sử dụng thuộc tính nào?

Câu trả lời:


15

Khối luôn có thể được tham chiếu bởi name. Bí danh ( as) được sử dụng để đơn giản hóa tên dài của một khối và chỉ khác với phạm vi. Namephải là duy nhất trong trang và aliastrong khối cha.


5
Tôi sợ điều đó không đúng. Trong mẫu, bạn không thể tham chiếu một khối theo tên của nó nếu nó có tập bí danh. Bạn chỉ có thể sử dụng bí danh. Vì sự độc đáo của bí danh, hoàn toàn ngược lại - bí danh được giới thiệu để có thể hiển thị một khối khác mà không thay đổi mẫu.
Jan Tomka

5
@JanTomka đã đưa ra công dụng chính của bí danh. Cần phải chỉ ra rằng trong khi câu lệnh "bạn không thể tham chiếu một khối theo tên của nó nếu nó có tập bí danh" nói chung là đúng, có một phương thức được đặt tên getBlockHtml()đôi khi được sử dụng để kết xuất các khối theo tên.
đánh dấu

6

Khi bạn sử dụng as , bạn có thể gọi $ this-> getChildHtml ("as_value") trên mẫu phtml.

Các tên phải là duy nhất, và có thể được sử dụng cho <tham khảo> khối, <remove> vv

Ví dụ: (tệp 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>

Nếu bạn mở danh mục / sản phẩm / view.phtml, bạn sẽ thấy:

<div class="product-img-box">
    <?php echo $this->getChildHtml('media') ?>
</div>

Bạn thấy không? as = "media", rồi $ this-> getChildHtml ('media') ...


5

Không ai đã trả lời câu hỏi cụ thể về unsetChildchưa. Các phương thức liên quan đến con của một khối luôn đề cập đến các khối con theo bí danh, chỉ được biết đến bởi cha mẹ và không giống như tên, không phải là duy nhất trên toàn cầu.

Nhưng nếu khối được tạo mà không xác định bí danh, bí danh sẽ mặc định tên.

Vì vậy, trong ngắn hạn, nếu khối con có bí danh rõ ràng, bạn phải sử dụng bí danh. Nếu không, sử dụng tên.

Các bí danh được đưa ra bởi as="..."nếu khối được tạo dưới dạng khối con thông qua XML hoặc bằng tham số hành động nếu chúng được di chuyển xung quanh hoặc được thêm động bằng các phương thức như append(), insert()hoặc setChild().

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.