PEAR logo

HTML_QuickForm_advmultiselect : La Référence



Entêtes

Introduction
Appellation avec le QuickForm Default Renderer
Appellation avec le QuickForm ITDynamic Renderer
En pratique

Introduction

Une étiquette est une zone texte de description (légende) qui sera affichée à coté de l'élément. Quelques renderers peuvent gérer le multi étiquettage. Les marquages utilisés par ces renderers ont des conventions de nom différent. Ne vous en faites pas, HTML_QuickForm_advmultiselect utilise seulement un standard de codification qui est équivalent à celui du QuickForm default renderer.

Alors que {label_2} est le marquage de la seconde étiquette (liste d'attente), {label_3} est le marquage pour la troisième étiquette (liste de sélection), dans le tableau des valeurs. Voir aussi la méthode HTML_QuickForm::setLabel() .

[Important] Important
La première étiquette est toujours pour l'élément advmultiselect lui-même. Son nom dépend du QuickForm renderer utilisé. Voir les exemples qui suivent pour noter la différence.

Appellation avec le QuickForm Default Renderer

  1. <?php
  2. require_once 'HTML/QuickForm.php';
  3. require_once 'HTML/QuickForm/advmultiselect.php';
  4.  
  5. $template =
  6. '<tr>
  7.     <td align="right" valign="top">
  8.         <b>{label}</b>
  9.     </td>
  10.     <td valign="top" align="left">
  11.         {element}
  12.         <!-- BEGIN error --><br/><font color="red">{error}</font><br/><!-- END error -->
  13.     </td>
  14. </tr>';
  15.  
  16. // Create the form, and add a header to it.
  17. $form = new HTML_QuickForm('qfamsLabels');
  18. $form->addElement('header', null, 'QuickForm Labels Example: default renderer');
  19.  
  20. $cars = array(
  21.     'dodge'     =>  'Dodge',
  22.     'chevy'     =>  'Chevy',
  23.     'bmw'       =>  'BMW',
  24.     'audi'      =>  'Audi',
  25.     'porsche'   =>  'Porsche',
  26.     'kia'       =>  'Kia',
  27.     'subaru'    =>  'Subaru',
  28.     'mazda'     =>  'Mazda',
  29.     'isuzu'     =>  'Isuzu',
  30. );
  31.  
  32. $labels = array('Cars:', 'Models', 'Your selection');
  33.  
  34. // Do the magic! Just pass your label to the element as an array!
  35. $form->addElement('advmultiselect', 'cars', $labels, $cars);
  36.  
  37. // customize the element template
  38. $renderer =&amp; $form->defaultRenderer();
  39. $renderer->setElementTemplate($template);
  40.  
  41. // output the form
  42. $form->display();
  43. ?>
Ligne 8 :

La première étiquette avec le default renderer, est toujours identifiée par {label}.

Ligne 32 :

Dans cet exemple, sa valeur sera Cars:.

Appellation avec le QuickForm ITDynamic Renderer

  1. <?php
  2. require_once 'HTML/Template/Sigma.php';
  3. require_once 'HTML/QuickForm.php';
  4. require_once 'HTML/QuickForm/Renderer/ITDynamic.php';
  5. require_once 'HTML/QuickForm/advmultiselect.php';
  6.  
  7. $template = '
  8. <form {qf_attributes}>
  9. <table class="maintable">
  10.  
  11. <!-- BEGIN qf_hidden_block -->
  12. <div style="display: none;">
  13.   <!-- BEGIN qf_hidden_loop -->{qf_hidden}<!-- END qf_hidden_loop -->
  14. </div>
  15. <!-- END qf_hidden_block -->
  16.  
  17. <!-- BEGIN qf_main_loop -->
  18.  
  19.   <!-- BEGIN qf_header -->
  20.   <tr><th class="maintable" colspan="2">{qf_header}</th></tr>
  21.   <!-- END qf_header -->
  22.  
  23.   <!-- BEGIN qf_element -->
  24.   <tr>
  25.     <td align="right" width="30%"><span class="qfLabel">{qf_label}&amp;nbsp;</span></td>
  26.     <td>{qf_element}
  27.       <!-- BEGIN qf_element_error --><br /><span style="color: #FF0000;">{qf_error}</span><!-- END qf_element_error -->
  28.     </td>
  29.   </tr>
  30.   <!-- END qf_element -->
  31.  
  32. <!-- END qf_main_loop -->
  33. </table>
  34. </form>
  35. ';
  36.  
  37. // Create the form, and add a header to it.
  38. $form = new HTML_QuickForm('qfamsLabels');
  39. $form->addElement('header', null, 'QuickForm Labels Example: itdynamic renderer');
  40.  
  41. $cars = array(
  42.     'dodge'     =>  'Dodge',
  43.     'chevy'     =>  'Chevy',
  44.     'bmw'       =>  'BMW',
  45.     'audi'      =>  'Audi',
  46.     'porsche'   =>  'Porsche',
  47.     'kia'       =>  'Kia',
  48.     'subaru'    =>  'Subaru',
  49.     'mazda'     =>  'Mazda',
  50.     'isuzu'     =>  'Isuzu',
  51. );
  52.  
  53. $labels = array('Cars:', 'Models', 'Your selection');
  54.  
  55. // Do the magic! Just pass your label to the element as an array!
  56. $form->addElement('advmultiselect', 'cars', $labels, $cars);
  57.  
  58. // set the form template
  59. $tpl = new HTML_Template_Sigma('.');
  60. $tpl->setTemplate($template);
  61.  
  62. $renderer = new HTML_QuickForm_Renderer_ITDynamic($tpl);
  63.  
  64. $form->accept($renderer);
  65.  
  66. // output the form
  67. $tpl->show();
  68. ?>
Ligne 25 :

La première étiquette avec le ITDynamic renderer, est toujours identifiée par {qf_label}.

Ligne 53 :

Dans cet exemple, sa valeur est encore Cars:.

En pratique

Revoyons en détails comment définir l'apparence des entêtes dans un des exemples inclus de ce paquetage.

Après la définition des étiquettes:

  1. <?php
  2. $ams->setLabel(array('Fruit:', 'Available', 'Selected'));
  3. ?>

Regardons de plus prêt le contenu du gabarit advmultiselect qui suit :

  1. <?php
  2. $template = '
  3. <table{class}>
  4. <!-- BEGIN label_2 --><tr><th align="center">{label_2}</th><!-- END label_2 -->
  5. <!-- BEGIN label_3 --><th align="center">{label_3}</th></tr><!-- END label_3 -->
  6. <tr>
  7.   <td>{unselected}</td>
  8.   <td>{selected}</td>
  9. </tr>
  10. <tr>
  11.   <td align="center">{add}</td>
  12.   <td align="center">{remove}</td>
  13. </tr>
  14. </table>';
  15. ?>
Ligne 4 :

L'entête de la liste d'attente (nommée Available) est en gras centré au sommet de celle-ci grace à la balise TH.

Ligne 5 :

L'entête de la liste de sélection (nommée Selected), est aussi en gras centré au sommet de celle-ci grace à une autre balise TH.

[Astuce] Astuce
Pour attribuer un entête à la seule liste de sélection, soit vous coder la ligne :
  1. <?php
  2. $ams->setLabel(array( 'Fruit:', null, 'Your selection'));
  3. ?>
ou soit vous supprimer la ligne commençant par <!-- BEGIN label_2 --> dans le gabarit de l'élément advmultiselect.
HTML_QuickForm_advmultiselect : La Référence v 1.4.0 : 9 Juin 2007