Đây có phải là cách thực hành tốt nhất cho hàm Block để gọi hàm ResourceModel không?


7

Có phù hợp với lớp Block để truy xuất dữ liệu thông qua một hàm trong lớp ResourceModel, thay vì lớp Model không?
Hoặc Block nên gọi Model mà sau đó chuyển cuộc gọi đến ResourceModel?

Chuyển trực tiếp từ Block sang ResourceModel là đơn giản nhất và tránh trùng lặp khá nhiều chức năng có thể, nhưng bạn có coi nó là hình thức xấu, phá vỡ các mô hình thực hành tốt nhất không?

Câu trả lời:


3

Điều này là hoàn toàn chấp nhận được. Trong thực tế, ngoài việc khởi tạo các Mô hình tài nguyên trong các bộ điều khiển, đây là cách nó dự định hoạt động. Mô hình tài nguyên là một kiểu Mô hình đặc biệt trong Magento - một kiểu nhập dữ liệu từ nguồn dữ liệu.

Nếu bạn kiểm tra lõi Magento, bạn sẽ thấy nhiều trường hợp sử dụng Mô hình tài nguyên trong Khối. Nhiều lần bạn không nhận ra đó là những gì đang xảy ra bởi vì điều này thường được viết như sau:

Mage::getModel('catalog/product')->getCollection();

Phương thức của một khối sẽ cung cấp nó cho mẫu để sử dụng - thường là để lặp lại.


1
Cảm ơn cho phát lại của bạn. Tôi nghĩ rằng tôi có được bạn, nhưng Mage::getResourceModel('log/visitor')->getStartOfLog() trong một khối thì sao? Điều đó sẽ không bỏ qua lớp Mô hình (miền)?
fris

3

Về mặt lý thuyết, tôi nghĩ đó là hình thức tồi vì ai đó có thể đã thay đổi lớp mô hình tài nguyên (rất khó xảy ra). Nhưng nó phụ thuộc. Một ví dụ thực tế là các mô hình tài nguyên sản phẩm và danh mục (và bộ sưu tập tài nguyên). Nếu bạn khởi tạo chúng trực tiếp, bạn có thể không có được mô hình thích hợp (phẳng hoặc bình thường). Tôi nghĩ rằng đó là ví dụ duy nhất về nơi nó thực sự quan trọng.


Đồng ý rằng có lẽ nhiều trường hợp của những người theo chủ nghĩa thuần túy so với những người theo chủ nghĩa thực dụng hàng ngày.
fris
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.