Come posso usare un modello di altro componente nel mio componente?


8

Sto creando un componente e deve accedere alla tabella #__content. Il componente com_content fa tutto ciò che il mio componente deve fare in quella tabella. Come posso importare i modelli com_content nei controller nel mio componente?

È una buona pratica usare una tabella esistente invece di crearne una mia? Il mio componente mostrerà una galleria fotografica con commenti e voglio usare la tabella #__content per memorizzare i commenti. Devo creare una nuova tabella per i commenti?

Risposte:


16

Puoi importare com_contentmodelli nel controller usando il addIncludePath()metodo:

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

addIncludePath()Il metodo aggiunge una directory in cui JModelLegacycercare i modelli. È possibile passare una stringa o una matrice di directory come primo parametro. Come secondo parametro è possibile specificare il prefisso di classe per i modelli (facoltativo).

Quindi usa solo il getInstance()metodo:

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

Il primo parametro è il tipo di modello da istanziare, il secondo è il prefisso per il nome della classe del modello (opzionale) e il terzo parametro è l'array di configurazione per il modello (opzionale).

Ma preferisco non utilizzare le tabelle dei componenti principali esistenti per i componenti personalizzati.


Grazie! È quello che stavo cercando. Proverò ad evitare di utilizzare componenti core esistenti. Penso che tu abbia ragione su questo.
— csbenjamin,

Okey, adesso ... Come posso usarlo. Ad esempio, supponiamo che io abbia la funzione getMsg, come la chiamo ?. $this->msg = $this->get('Msg');
— ValRob,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.