it-swarm-vi.com

Làm thế nào tôi có thể sử dụng một mô hình của thành phần khác trong thành phần của tôi?

Tôi đang xây dựng một thành phần và nó cần truy cập vào bảng #__content. Thành phần com_content thực hiện mọi thứ mà thành phần của tôi cần làm trong bảng đó. Làm cách nào tôi có thể nhập các mô hình com_content vào các bộ điều khiển trong thành phần của mình?

Là một thực hành tốt để sử dụng một bảng tồn tại thay vì để tạo riêng của tôi? Thành phần của tôi sẽ hiển thị một bộ sưu tập ảnh với các bình luận và tôi muốn sử dụng bảng #__content để lưu trữ các bình luận. Tôi có nên tạo một bảng mới cho các ý kiến?

8
csbenjamin

Bạn có thể nhập các mô hình com_content Vào bộ điều khiển bằng phương thức addIncludePath():

JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_content/models', 'ContentModel');

Phương thức addIncludePath() thêm một thư mục trong đó JModelLegacy nên tìm kiếm các mô hình. Bạn có thể truyền một chuỗi hoặc một mảng các thư mục làm tham số đầu tiên. Là tham số thứ hai, bạn có thể chỉ định tiền tố lớp cho các mô hình (tùy chọn).

Sau đó, chỉ cần sử dụng phương thức getInstance():

$model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));

Tham số đầu tiên là kiểu mô hình để khởi tạo, thứ hai là tiền tố cho tên lớp mô hình (tùy chọn) và tham số thứ ba là mảng cấu hình cho mô hình (tùy chọn).

Nhưng tôi không thích sử dụng các bảng thành phần cốt lõi hiện có cho các thành phần tùy chỉnh.

16
Dmitry Rekun