Sự khác biệt giữa <remove name = xông "/> và <action method = '


21

Sự khác biệt giữa <action method=”unsetChild”>và là <remove name=""/>gì?

Cả hai chức năng được sử dụng để loại bỏ một khối khỏi bố cục.

Ai đó có thể giải thích với một ví dụ?

Câu trả lời:


21

<remove name="" />hoạt động trong phạm vi khối toàn cầu của Mage_Core_Model_Layout. Chúng được thu thập Mage_Core_Model_Layout::generateXml()sử dụng để ngăn chặn khối có tên được chỉ định ngay cả khi được khởi tạo . Ngoài ra, bất kỳ khối con nào được khai báo cho <remove />khối ed cũng sẽ không được khởi tạo .

<action method="" />aka Mage_Core_Block_Abstract::unsetChild()là một phương thức cấp khối để liệt kê khối con được chỉ định (theo bí danh , không phải theo tên ) từ thể hiện của khối cha mà hành động đang được gọi. Điều này thường dẫn đến việc khối "biến mất" khỏi đầu ra được kết xuất, mặc dù thể hiện khối vẫn được tạo. Được sử dụng kết hợp với ::append()hoặc ::insert()phương thức, nó được sử dụng để thực hiện "di chuyển".


Chỉ cần thêm vào điều này, nếu khối không có bí danh thì nó sẽ khớp với tên.
Ben Crook

2
Đúng, khi không có bí danh được cung cấp, aliascho một đứa trẻ được đặt thành của nó name. 👍
benmarks

2

<remove name="" />, Khi hoàn tất tất cả các bố cục, Magento sẽ xóa hoàn toàn khối có tên được chỉ định = "", bất kể xử lý bố cục nào đã được thêm vào. Sử dụng phương pháp này, không thể xóa một khối khỏi một vị trí và sau đó thêm nó vào một vị trí khác

<action method="unsetChild">chỉ hoạt động trong bối cảnh mà nó đang được sử dụng. unsetChild được tạo để di chuyển các khối hiện có từ nơi này sang nơi khác. Bạn cần sử dụng phương pháp này nếu bạn muốn xóa một khối cụ thể khỏi một điều khiển bố cục cụ thể và sau đó chèn nó vào một vị trí khác hoặc xử lý bố cục.


Không hẳn; xem câu trả lời của tôi để sửa chữa
đánh dấu
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.