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?


8

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 thực hiện 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 thư viện ả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?

Câu trả lời:


16

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

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

addIncludePath()phương thức thêm một thư mục nơi JModelLegacytìm kiếm 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 getInstance()phương pháp:

$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.


Cảm ơn! Đó là những gì tôi đang tìm kiếm. Tôi sẽ cố gắng tránh sử dụng các thành phần cốt lõi hiện có. Tôi nghĩ bạn đúng về điều đó.
csbenjamin

Okey tôi nhận được, bây giờ ... Làm thế nào tôi có thể sử dụng nó. Ví dụ: giả sử rằng tôi có hàm getMsg, làm thế nào để tôi gọi nó?. $this->msg = $this->get('Msg');
ValRob
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.