J3.x:Associações Multilingues/Programadores
From Joomla! Documentation
< J3.x:Multilingual Associations
Desenvolvedores/Programadores
Desenvolvedores/Programadores
Introdução
Se a sua extensão suportar associação e quiser que esteja disponível no Gestor de Associações, terá de desenvolver uma classe auxiliar (helper class).
Basicamente, terá de criar o ficheiro associations.php na directoria dos auxiliares de administrador do seu componente. Se o seu componente se chamar Exemplo a classe auxiliar dever-se-á chamar ExemploAssociationsHelper e esta classe irá ter que extender a classe JAssociationExtensionHelper.
Adicionar três variáveis protegidas
/**
* The extension name
*
* @var array $extension
*
* @since 3.7.0
*/
protected $extension = 'com_example';
/**
* Array of item types
*
* @var array $itemTypes
*
* @since 3.7.0
*/
protected $itemTypes = array('item');
/**
* Has the extension association support
*
* @var boolean $associationsSupport
*
* @since 3.7.0
*/
protected $associationsSupport = true;
Adicionar três funções públicas
Método getAssociations
Esta função deverá devolver um array de items associados.
/**
* Get the associated items for an item
*
* @param string $typeName The item type
* @param int $id The id of item for which we need the associated items
*
* @return array
*
* @since 3.7.0
*/
public function getAssociations($typeName, $id)
{
// The code goes here.
}
Método getItem
Esta função deverá devolver um objecto JTable para o tipo e id. Não esquecer de incluir algo como JTable::addIncludePath(__DIR__ . '/../tables'); para que a classe possa ser encontrada.
/**
* Get item information
*
* @param string $typeName The item type
* @param int $id The id of item for which we need the associated items
*
* @return JTable|null
*
* @since 3.7.0
*/
public function getItem($typeName, $id)
{
// The code goes here.
}
Método getType
Esta função deverá devolver um array de tipos de item.
/**
* Get information about the type
*
* @param string $typeName The item type
*
* @return array Array of item types
*
* @since 3.7.0
*/
public function getType($typeName = '')
{
// The code goes here.
}
Aqui poderá configurar a informação por tipo, a função devolve um array.
array(
'fields' => $fields,
'support' => $support,
'tables' => $tables,
'joins' => $joins,
'title' => $title,
);
Para campos e suporte temos uma função modelo que define configurações padrão para que seja apenas necessário substituir o que é diferente na sua extensão. Por favor certifique-se de que $fields['title'] e $fields['state'] sejam definidos correctamente.
Exemplo de Implementação
Poderá encontrar um exemplo para integração de associações multilingues/multi-idioma num componente no github.
Para mais informação acerca da funcionalidade em si por favor dê uma vista de olhos no Pull Request para esta funcionalidade.
If you have problems implementing the side-by-side view in com̞_associations please have a look into the Github Issue.