Ciao a tutti,
da un po' di giorni sto cercando di cimentarmi con lo sviluppo di un componente a uso personale e sono giunto ormai da diverso tempo ad un ostacolo che non riesco a superare...
Ho creato due tabelle, una composta da:
idGenere (chiave)
nome
che chiamerò tabella A
l'altra composta da:
idSpecie (chiave)
idGenere
nome
che chiamerò tabella B
in pratica le due tabelle sono collegate, la tabella B viene collegata alla tabella A tramite il campo idGenere.
Ho creato una lista che mi permette di visualizzare idSpecie, A.nome, B.nome
Ho impostato il link che mi permetta di visualizzare un form che carica i dati dalla tabella B per modificarli.
Questo form dovrebbe presentare il campo nome della tabella B (e lo carica correttamente anche se non capisco come colleghi il nome del campo del db al form..) e l'elenco dei campi nome della tabella A, che non riesco a visualizzare...
Il file XML che viene caricato per generare il form è il seguente:
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset>
<field
name="idSpecie"
type="hidden"
/>
<field
name="nome"
type="text"
label="SPECIE_NOME"
description="COM_xx_SPECIE_DESCRIZIONE_NOME"
size="20"
class="inputbox"
default=""
/>
<field
name="nomeGenere"
type="list"
default=""
label="GENERE_NOME"
description="COM_xx_GENERE_DESCRIZIONE_NOME"
/>
</fieldset>
</form>
La cosa che non mi torna più che altro è come Joomla collega il campo <field name="nome" ... >
va direttamente sul DB ?
Potrei impostare in qualche parte del codice per effettuare la join delle due tabelle?
Nella cartella fields ho creato un file dove imposto i campi, ma immagino non venga considerato...
copio sotto il codice:
defined('_JEXEC') or die;
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
class JFormFieldSpecie extends JFormFieldList
{
protected $type = 'Specie';
protected function getOptions()
{
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('a.idSpecie idSpecie, b.idGenere idGenere, b.nome nomeGenere, a.nome nomeSpecie');
$query->from('#__specie as a ');
$query->join('LEFT', '#__genere as b ON b.idGenere = a.idGenere');
$db->setQuery((string)$query);
$titles = $db->loadObjectList();
$options = array();
if($titles){
foreach($titles as $title)
{
$options[] = JHtml::_('select.option', $title->idSpecie, $title->idSpecie.' '.$title->idGenere.' '.$title->nomeGenere.' '.$title->nomeSpecie);
}
}
$options = array_merge(parent::getOptions(), $options);
return $options;
}
}
Posso postarvi altri file dove potrei aver commesso errori, o per aiutarvi a comprendere come ho strutturato il tutto?
Vi ricordo che sono un po' alle prime armi ed è probabile che abbia commesso qualche "bischerata" come si dice dalle mie parti
Grazie per l'aiuto,
ciao
Claudio