Je construis un composant et il doit accéder à la table #__content. Le composant com_content fait tout ce que mon composant doit faire dans cette table. Comment importer les modèles com_content dans les contrôleurs de mon composant?
Une bonne pratique consiste-t-elle à utiliser une table existante pour créer la mienne? Mon composant va afficher une galerie de photos avec des commentaires et je souhaite utiliser la table #__content pour stocker les commentaires. Dois-je créer un nouveau tableau pour les commentaires?
Vous pouvez importer des modèles com_content
Dans le contrôleur en utilisant la méthode addIncludePath()
:
JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_content/models', 'ContentModel');
La méthode addIncludePath()
ajoute un répertoire dans lequel JModelLegacy
devrait rechercher des modèles. Vous pouvez soit passer une chaîne ou un tableau de répertoires comme premier paramètre. En tant que deuxième paramètre, vous pouvez spécifier le préfixe de classe pour les modèles (facultatif).
Ensuite, utilisez simplement la méthode getInstance()
:
$model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));
Le premier paramètre est le type de modèle à instancier, le second est le préfixe du nom de la classe de modèle (facultatif) et le troisième paramètre est le tableau de configuration du modèle (facultatif).
Mais je préfère ne pas utiliser les tables de composants de base existantes pour les composants personnalisés.