it-swarm.it

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

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?

8
csbenjamin

Puoi importare modelli com_content Nel controller usando il metodo addIncludePath():

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

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

Quindi usa semplicemente il metodo getInstance():

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

16
Dmitry Rekun