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.