Back to top

Autore Topic: Nuovi campi nel plugin user profile  (Letto 4392 volte)

Offline saprile

  • Esploratore
  • **
  • Post: 74
    • Mostra profilo
Nuovi campi nel plugin user profile
« il: 02 Set 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


Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:Nuovi campi nel plugin user profile
« Risposta #1 il: 02 Set 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
« Ultima modifica: 02 Set 2015, 12:26:51 da giovi »

Offline steganoga

  • Abituale
  • ****
  • Post: 1313
    • Mostra profilo
Re:Nuovi campi nel plugin user profile
« Risposta #2 il: 02 Set 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
...sono dove non ti aspetti di trovarmi, mi alimento della tua supponenza e disseto la mia curiosità nel silenzio.
Non sono un nemico, considerami un ospite.

Offline saprile

  • Esploratore
  • **
  • Post: 74
    • Mostra profilo
Re:Nuovi campi nel plugin user profile
« Risposta #3 il: 03 Set 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!




 



Web Design Bolzano Kreatif