Back to top

Autore Topic: [Risolto][J!1.7] Popolare campo select quando si aggiunge una entry dal backend  (Letto 4910 volte)

Offline Alhazred

  • Appassionato
  • ***
  • Post: 289
    • Mostra profilo
Per il mio componente ho 3 tabelle: gruppi, campi, opzioni

quando vado ad inserire una nuova entry per la tabella "campi", mi compare tra le altre cose un menu select da cui scegliere i gruppi esistenti.
Per popolare questo menu, al momento, mi appoggio al file campi.xml che presenta anche questa porzione di codice
Codice: [Seleziona]
<field name="group" type="list" class="inputbox"
    label="COM_PREVENTIVILIBRI_FORM_LBL_CAMPOFORM_ GROUP" description="COM_PREVENTIVILIBRI_FORM_DESC_CAMPOFORM _GROUP"
    required="true" size="1" default="1">
    <option value="1">Gruppo 1</option>
    <option value="2">Gruppo 2</option>
    <option value="3">Gruppo 3</option>
</field>
In questo modo, quando inserisco un nuovo gruppo, devo andare a modificare a mano il file xml.
C'è un modo per definire nel file xml solo
Codice: [Seleziona]
<field name="group" type="list" class="inputbox"
     label="COM_PREVENTIVILIBRI_FORM_LBL_CAMPOFORM_ GROUP" description="COM_PREVENTIVILIBRI_FORM_DESC_CAMPOFORM _GROUP"
     required="true" size="1" default="1">
</field>
E popolare il menu tramite php leggendo i dati dal db?
« Ultima modifica: 30 Ago 2011, 15:37:39 da Alhazred »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
ciao,
 sinceramento non capisco per quale ragione tu sia passato da un file xml... più che altro di che file xml stai parlando? dei parametri del componente per la configurazione delle opzioni? in tal caso puoi usare direttamente SQL (vedi docs.joomla.org)

ciao,
marco


mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline Alhazred

  • Appassionato
  • ***
  • Post: 289
    • Mostra profilo
Ciao Marco,
no, non la configurazione del componente.
Dal backend vado nel menu Componenti -> Nome componente
qui trovo 3 voci (che ovviamente ho messo io) cliccando su una voce mi appare l'elenco degli elementi inseriti in quella tabella.
Supponendo di visualizzare la tabella Campi, cliccando sul pulsante "Nuovo" in alto a destra nella toolbar

mi appare la form con i vari campi per inserire un nuovo elemento.
Uno di questi campi deve essere un menu select che riporti i nomi degli elementi contenuti nella tabella "Gruppi".


Come si popola questo menu select leggendo dal db?

I file xml di cui parlo si trovano in
administrator/components/com_miocomponente/models/forms

Offline Alhazred

  • Appassionato
  • ***
  • Post: 289
    • Mostra profilo
Ho appena visto che quello che sto facendo attualmente è esattamente questo
http://docs.joomla.org/Developing_a_Model-View-Controller_%28MVC%29_Component_for_Joomla!1.6_-_Part_09

Quindi non c'è altro modo se non leggendo il file xml per popolare i campi select di quella form?
In tal caso in quale funzione è meglio mettere il codice per modificare i file xml contestualmente all'inserimento/modifica di una entry?

mau_develop

  • Visitatore
In tal caso in quale funzione è meglio mettere il codice per modificare i file xml contestualmente all'inserimento/modifica di una entry?
--------------------------------------------------
??? modificare l'xml?... mi sa che stai facendo confusione...

M.

Offline Alhazred

  • Appassionato
  • ***
  • Post: 289
    • Mostra profilo
Tu come popoleresti quel menu select?

mau_develop

  • Visitatore
LEZIONE 9 (come da link)

admin/models/forms/helloworld.xml

<?xml version="1.0" encoding="utf-8"?>
<form>
   <fieldset>
      <field
         name="id"
         type="hidden"
      />
      <field
         name="greeting"
         type="text"
         label="COM_HELLOWORLD_HELLOWORLD_GREETING_LABE L"
         description="COM_HELLOWORLD_HELLOWORLD_GREETING_DESC"
         size="40"
         class="inputbox"
         default=""
      />
   </fieldset>
</form>
--------------------------------------------------------------------------
il ragionamento che mi sono fatto io quando sono arrivato a qs punto è stato:

<field name="id" type="hidden"/>
<field name="greeting"  type="text"

... ma vuoi vedere che ci sono altri type ?!

... e ci sono :) http://docs.joomla.org/Standard_parameter_types
poi scorrendo la lista ho visto che esiste "sql" ...maddai? ... quello che volevo...

... e così ho popolato la mia select

o per la 1.7 http://docs.joomla.org/SQL_form_field_type

M.
« Ultima modifica: 30 Ago 2011, 15:17:38 da mau_develop »

Offline Alhazred

  • Appassionato
  • ***
  • Post: 289
    • Mostra profilo
Grazie mille :)
Riesco a popolare il menu, ma non come voglio.

Sia il value che la descrizione sono uguali.
Mi spiego, dalla tabella devo prendere id (da associare al value) e name (da usare come descrizione)
questo è l'sql che uso
SELECT id AS value, name FROM #__tabella WHERE state=1

le option vengono generate così
<option value='1'>1</option>
<option value='2'>2</option>
e così via

come faccio ad ottenere questo?
<option value='1'>name 1</option>
<option value='2'>name 2</option>
...

Offline Alhazred

  • Appassionato
  • ***
  • Post: 289
    • Mostra profilo
Come non detto.. trovato
Grazie ancora :)

Offline mpigio

  • Appassionato
  • ***
  • Post: 240
  • Sesso: Maschio
    • Mostra profilo
Grazie a questo post sono riuscito ad inserire la select.
E' possibile aggiungere un valore all'elenco per non selezionare nulla?

Grazie!

mau_develop

  • Visitatore
<option value='0'>nulla</option>

M.

Offline mpigio

  • Appassionato
  • ***
  • Post: 240
  • Sesso: Maschio
    • Mostra profilo
Grazie mau_develop, questa soluzione l'ho adottata per il fitro di ricerca, ma qui sono nell'edit di un singolo item e il codice che utilizzo è il seguente

Codice: [Seleziona]
<?php    foreach ($this->form->getFieldset() as $field) { ?>
            <li><?php echo $field->label?><?php echo $field->input?></li>
<?php    ?>

e carica in automatico dall'xml dei field, e la query carica direttamente da db.
Vorrei evitare di aggiungere sul db "Nessun valore".

Grazie ancora

 



Web Design Bolzano Kreatif