Bagaimana saya bisa menggunakan model komponen lain dalam komponen saya?

8

Saya sedang membangun sebuah komponen dan perlu mengakses tabel #__content. Komponen com_content melakukan semua yang komponen saya perlu lakukan dalam tabel itu. Bagaimana cara mengimpor model com_content ke dalam pengontrol di komponen saya?

Apakah praktik yang baik untuk menggunakan tabel yang ada sebagai gantinya untuk membuat tabel saya sendiri? Komponen saya akan menampilkan galeri foto dengan komentar dan saya ingin menggunakan tabel #__content untuk menyimpan komentar. Haruskah saya membuat tabel baru untuk komentar?

csbenjamin
sumber

Jawaban:

16

Anda dapat mengimpor com_contentmodel ke controller menggunakan addIncludePath()metode:

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

addIncludePath()Metode menambahkan direktori di mana JModelLegacyharus mencari model. Anda dapat meneruskan string atau array direktori sebagai parameter pertama. Sebagai parameter kedua Anda dapat menentukan awalan kelas untuk model (opsional).

Maka cukup gunakan getInstance()metode:

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

Parameter pertama adalah tipe model untuk instantiate, yang kedua adalah awalan untuk nama kelas model (opsional) dan parameter ketiga adalah array konfigurasi untuk model (opsional).

Tapi saya lebih suka tidak menggunakan tabel komponen inti yang ada untuk komponen khusus.

Dmitry Rekun
sumber
Terima kasih! Itu yang saya cari. Saya akan mencoba menghindari menggunakan komponen inti yang ada. Saya pikir Anda benar tentang itu.
csbenjamin
Oke, saya mengerti, sekarang ... Bagaimana saya bisa menggunakannya. Sebagai contoh, mari kita asumsikan bahwa saya memiliki fungsi getMsg, bagaimana saya menyebutnya ?. $this->msg = $this->get('Msg');
ValRob