Joomla.it Forum

Non solo Joomla... => Sviluppo => Esperimenti e test => : saprile 02 Sep 2015, 11:22:21

: Nuovi campi nel plugin user profile
: 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

: Re:Nuovi campi nel plugin user profile
: giovi 02 Sep 2015, 12:25:12
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
: Re:Nuovi campi nel plugin user profile
: steganoga 02 Sep 2015, 12:32:27
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
: Re:Nuovi campi nel plugin user profile
: saprile 03 Sep 2015, 09:22:29
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!