[Pear::HTML_QuickForm & Smarty] data grid

Salve gente,

ho cominciato da poco ad utilizzare smarty, e da ancora meno ad utilizzare HTML_QuickForm...

avendo un'elenco di utenti estratto dal db devo creare una pagina html con una tabella che visualizzi questi campi:

 - id

 - nome

 - username

 ...

 - checkbox (per eliminazione)

... e proprio sul checkbox sta il mio problema, non conoscendo bene HTML_QuickForm.

Sapete indicarmi come potrei procedere?

(..ho provato anche con google ma le uniche resource che ho trovato erano in tedesco :idiot:!)

grazie in anticipo per le eventuali risposte  :bye:

inviato 10 anni fa
Xscratch
X 0 X

Una volta creato l'oggetto $form, per creare una checkbox devi procedere come per gli altri tipi di controlli:

$form->addElement('checkbox', 'nome_checkbox', 'Etichetta principale', 'Etichetta della checkbox');

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

intanto grazie per aver risposto, cmq...

fin quì c'ero arrivato, ma se io ho un'array di oggetti utente

$data = array(
0 => utente Object (3)
  id_utente => 1
  nome => Utente1
  note => noteasdsad
1 => utente Object (3)
  id_utente => 2
  nome => Utente2
  note => sdgklhdfg

contenente la mia lista che nel template è

{* Visualizzazione Elenco *}
<table>
   <tr>
      <td>ID</td>
      <td>NOME</td>
      <td>NOTE</td>
   </tr>
   {section name=customer loop=$data}
      {if $smarty.section.customer.rownum is odd}
         <tr>
            <td class="row1">{$data[customer]->get_id_utente()}</td>
            <td class="row1">{$data[customer]->get_nome()}</td>
            <td class="row1">{$data[customer]->get_note()}</td>
         </tr>         
      {else}
         <tr>
            <td class="row2">{$data[customer]->get_id_utente()}</td>
            <td class="row2">{$data[customer]->get_nome()}</td>
            <td class="row2">{$data[customer]->get_note()}</td>
         </tr>
      {/if}
   {sectionelse}
      <tr>
         <td colspan="3">non ci sono utenti</td>
      </tr>
   {/section}
</table>

come faccio a mettere anche il checkbox?

risposto 10 anni fa
Xscratch
modificato 10 anni fa
X 0 X

Non ho esperienza diretta dell'uso combinato di Smarty e HTML_QUICKFORM, ma se dai un'occhiata a questo articolo troverai quello che cerchi:

http://davidmintz.org/presentations/show.php/QuickForm_and_Smarty/

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Il tuo scopo è unire l'HTML prodotto da Smarty con quello prodotto da  HTML_QuickForm

il problema non è di facile risoluzione poiché entrambi gli strumenti hanno una loro procedura per la creazione dell'HTML (rendering) che a priori crea tutto l'output con un'unica chiamata.

HTML_QuickForm ha ad esempio la funzione display() che produce l'intero form. Pertanto non è immediatamente possibile intercalare un template Smarty con gli elementi di un form creato da HTML_QuickForm.

C'è però una soluzione, offerta direttamente da HTML_QuickForm. HTML_QuickForm infatti può restituire il suo output all'interno di un array con il metodo toArray()

La procedura dettagliata è scritta nel link che ho riportato nel post precedente. Non è semplicissima ma se vuoi usare Smarty e  HTML_QuickForm insieme non c'è altra soluzione.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

infatti utilizzo già questo metodo,

infatti se scrivo

{$data_grid.check_1.html} mi viene visualizzato il mio bel checkbox.

ma se ho 20 checkbox e non riesco ad accederci con un indice numerico non posso nemmeno metterle in un foreach....

risposto 10 anni fa
Xscratch
X 0 X

perfetto, allora prova così e fammi sapere:

{section name=customer loop=$data}
   {assign var=nome_dinamico value="check_`$smarty.section.customer.index`"}
   {$data_grid.$nome_dinamico.html}
{/section}
risposto 10 anni fa
Gianni Tomasicchio
X 0 X

[move]SIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!![/move]

[move] :D[/move]

I LOVE YOU!!!! :smitten: O0 O0 O0 O0

cioè.... ovviamente sto parlando in senso lato....

non farti strane idee!  :2funny:

risposto 10 anni fa
Xscratch
modificato 10 anni fa
X 0 X

 :'( che delusione  :-[

P.S.: se ti va di scrivere qualcosa per il sito su questi argomenti contattami con un messaggio privato  :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda