ti-enxame.com

Como posso usar um modelo de outro componente no meu componente?

Estou construindo um componente e ele precisa acessar a tabela #__content. O componente com_content faz tudo o que meu componente precisa fazer nessa tabela. Como posso importar os modelos com_content para os controladores do meu componente?

É uma boa prática usar uma tabela existente para criar a minha? Meu componente mostrará uma galeria de fotos com comentários e desejo usar a tabela #__content para armazenar os comentários. Devo criar uma nova tabela para os comentários?

8
csbenjamin

Você pode importar modelos com_content Para o controlador usando o método addIncludePath():

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

O método addIncludePath() adiciona um diretório em que JModelLegacy deve procurar modelos. Você pode passar uma string ou uma matriz de diretórios como o primeiro parâmetro. Como segundo parâmetro, você pode especificar o prefixo da classe para os modelos (opcional).

Então basta usar o método getInstance():

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

O primeiro parâmetro é o tipo de modelo a ser instanciado, o segundo é o prefixo do nome da classe do modelo (opcional) e o terceiro parâmetro é a matriz de configuração do modelo (opcional).

Mas prefiro não usar as tabelas de componentes principais existentes para componentes personalizados.

16
Dmitry Rekun