Joomla.it Forum
Non solo Joomla... => Sviluppo => Esperimenti e test => : saprile 02 Sep 2015, 11:22:21
-
Buongiorno,
ho la necessità di personalizzare il profilo dell'utente aggiungendo nuovi campi non previsti, fin qui nessun problema.
Ho aggiunto il campo "Regione", di tipo "sql", con la relativa query al database:
<field
name="regione"
type="sql"
default=""
label="PLG_USER_PROFILE_FIELD_REGIONE_LABEL"
description="PLG_USER_PROFILE_FIELD_REGIONE_DESC"
query="SELECT id, nome FROM tabella_regione ORDER BY nome ASC"
key_field="id"
value_field="nome">
<option value="">-- Seleziona la regione --</option>
</field>
Dopo aver selezionato la regione, nel successivo menù a tendina devono apparire le provincie della regione scelta, quindi la query deve avere una condizione in base all'id scelto in precedenza (id_regione):
<field
name="provincia"
type="sql"
default=""
label="PLG_USER_PROFILE_FIELD_PROVINCIA_LABEL"
description="PLG_USER_PROFILE_FIELD_PROVINCIA_DESC"
query="SELECT id, nome FROM tabella_provincia WHERE id_regione='xxxxxxx' ORDER BY nome ASC"
key_field="id"
value_field="nome">
<option value="">-- Seleziona la provincia --</option>
</field>
Come faccio a rendere dinamica la seconda query passandogli il valore selezionato in precedenza?
Esiste una maniera per poter utilizzare del codice javascript o ajax o altro?
Grazie
-
Si, si può fare ma non devi usare il field sql, devi crearne uno custom. I field presenti in joomla lavorano individualmente e restituiscono un valore per campo, mentre a te serve che venga restituito un solo valore utilizzando più select. Con il field custom puoi fare tutto ciò che vuoi
-
Come faccio a rendere dinamica la seconda query passandogli il valore selezionato in precedenza?
Esiste una maniera per poter utilizzare del codice javascript o ajax o altro?
http://stackoverflow.com/questions/17998068/joomla-jform-chained-select-with-foreign-key-ajax-and-jquery
-
Ok, perfetto, non avendo scelta ho creato i due tipi di campo personalizzati, "regione" e "provincia" con il seguente codice nei rispettivi file:
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die('Restricted access');
jimport('joomla.form.formfield');
class JFormFieldRegione extends JFormField {
protected $type = 'Regione';
public function getInput() {
$db =& JFactory::getDBO();
$query="SELECT * FROM tabella_regione ORDER BY nome ASC";
$db->setQuery($query);
$results = $db->loadObjectList();
$campo="<select id=\"regione\" name=\"regione\">";
$campo.='<option value=\"" >-- Seleziona regione --</option>';
foreach ($results as $regione) {
$campo.='<option value='.$regione->id.' >'.$regione->nome.'</option>';
}
$campo.="</select>";
return $campo;
}
}
e
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die('Restricted access');
jimport('joomla.form.formfield');
class JFormFieldProvincia extends JFormField {
protected $type = 'Provincia';
public function getInput() {
$db =& JFactory::getDBO();
$query="SELECT * FROM tabella_provincia ORDER BY nome ASC";
$db->setQuery($query);
$results = $db->loadObjectList();
$campo="<select id=\"provincia\" name=\"provincia\">";
$campo.='<option value=\"" >-- Seleziona provincia --</option>';
foreach ($results as $provincia) {
$campo.='<option value=\"'.$provincia->id.'\" >'.$provincia->nome.'</option>';
}
$campo.="</select>";
return $campo;
}
}
funziona correttamente, viene visualizzato il contenuto giusto dei due menù a tendina, il problema è ora richiamare con un "onChange" dal menù "regione" ed INVIARE il rispettivo valore al menù "provincia", come si può fare riferimento e ricaricare il menù "provincia" modificando la regione? Come posso passare il valore ad un altra classe?
Grazie in anticipo!