it-swarm-es.tech

¿Cómo puedo usar un modelo de otro componente en mi componente?

Estoy construyendo un componente y necesita acceder a la tabla de contenidos #__. El componente com_content hace todo lo que mi componente necesita hacer en esa tabla. ¿Cómo puedo importar los modelos com_content en los controladores de mi componente?

¿Es una buena práctica utilizar una tabla existente para crear la mía propia? Mi componente mostrará una galería de fotos con comentarios y quiero usar la tabla de contenido #__ para almacenar los comentarios. ¿Debo crear una nueva tabla para los comentarios?

8
csbenjamin

Puede importar modelos com_content Al controlador utilizando el método addIncludePath():

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

El método addIncludePath() agrega un directorio donde JModelLegacy debe buscar modelos. Puede pasar una cadena o una matriz de directorios como primer parámetro. Como segundo parámetro, puede especificar el prefijo de clase para los modelos (opcional).

Luego solo use el método getInstance():

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

El primer parámetro es el tipo de modelo para instanciar, el segundo es el prefijo para el nombre de clase de modelo (opcional) y el tercer parámetro es la matriz de configuración para el modelo (opcional).

Pero prefiero no usar tablas de componentes principales existentes para componentes personalizados.

16
Dmitry Rekun