HTML_QuickForm_advmultiselect::setButtonAttributes

HTML_QuickForm_advmultiselect::setButtonAttributes() – Définir les attributs des boutons

Synopsis

require_once 'HTML/QuickForm/advmultiselect.php';

void HTML_QuickForm_advmultiselect::setButtonAttributes ( string $button , mixed $attributes = NULL )

Description

Les définitions standards proposent de simples boutons texte. Vous pouvez changer la présentation avec des CSS si vous renseigner l'attribut class dans le second paramètre $attributes . Voir l'exemple.

Seulement cinq attributs peuvent être utilisés, les voici :

name

Le nom du bouton au sein du formulaire. Les défauts sont: 'add', ou 'remove', ou 'all', ou 'none', ou 'toggle', ou 'up', ou 'down', or 'top', or 'bottom'.

value

Le libellé des boutons type text. Les défauts sont: ' >> ', or ' << ', ou ' Select All ', ou ' Select None ', ou ' Toggle Selection ', ou ' Up ', ou ' Down ', ou ' Top ', ou ' Bottom '.

type

Le type de bouton. Le défaut est 'button' (peut être aussi bien 'button' que 'image').

class

Un identificateur de classe CSS dans une de vos feuilles de styles.

src

L'URL de l'image utilisée.

Parameter

string $button

Identificateur du bouton, soit 'add', 'remove', 'all', 'none', 'toggle', 'moveup' 'movedown' 'movetop' ou 'movebottom'

mixed $attributes

(optionnel) Soit une chaîne de caractère clef=valeur, soit un tableau associatif de couple(s) clef=valeur, correspondant à des attributs HTML.

Throws

Possible PEAR_Error values
Erreur Raison Solution
Argument 1 of HTML_QuickForm_advmultiselect::setButtonAttributes is not a string Vous avez fourni autre chose qu'une chaîne de caractère Vérifier le type de valeur de l'argument $button
Argument 1 of HTML_QuickForm_advmultiselect::setButtonAttributes has unexpected value Vous avez essayé de donner un type de bouton inconnu Vérifier la valeur de l'argument $button

Note

Depuis la version 0.4.0 (2005-06-25)

This function can not be called statically.

Example

Dans cet exemple, les boutons 'add' et 'remove' ont une présentation définie par la classe css 'inputCommand'.

<?php
require_once 'HTML/QuickForm.php';
require_once 
'HTML/QuickForm/advmultiselect.php';

$form = new HTML_QuickForm('ams');
$form->removeAttribute('name');        // XHTML compliance

$fruit_array = array(
    
'apple'     =>  'Apple',
    
'orange'    =>  'Orange',
    
'pear'      =>  'Pear',
    
'banana'    =>  'Banana',
    
'cherry'    =>  'Cherry',
    
'kiwi'      =>  'Kiwi',
    
'lemon'     =>  'Lemon',
    
'lime'      =>  'Lime',
    
'tangerine' =>  'Tangerine',
);

// rendering with QF renderer engine and template system
$form->addElement('header'null'Advanced Multiple Select: custom layout ');

$ams =& $form->addElement('advmultiselect''fruit'null$fruit_array);

$ams->setLabel(array('Fruit:''Available''Selected'));
$ams->setButtonAttributes('add',    array('value' => 'Add >>',
                                          
'class' => 'inputCommand'
));
$ams->setButtonAttributes('remove', array('value' => '<< Remove',
                                          
'class' => 'inputCommand'
));
$template '
<table{class}>
<!-- BEGIN label_2 --><tr><th align="center">{label_2}</th><!-- END label_2 -->
<!-- BEGIN label_3 --><th align="center">{label_3}</th></tr><!-- END label_3 -->
<tr>
  <td>{unselected}</td>
  <td>{selected}</td>
</tr>
<tr>
  <td>{add}</td>
  <td>{remove}</td>
</tr>
</table>'
;
$ams->setElementTemplate($template);

if (isset(
$_POST['fruit'])) {
    
$form->setDefaults(array('fruit' => $_POST['fruit']));
}

$form->addElement('submit''send''Send');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>HTML_QuickForm::advMultiSelect example </title>
<style type="text/css">
<!--
body {
  background-color: #FFF;
  font-family: Verdana, Arial, helvetica;
  font-size: 10pt;
}

.inputCommand {
    background-color: #d0d0d0;
    border: 1px solid #7B7B88;
    width: 7em;
    margin-bottom: 2px;
}
// -->
</style>
<?php echo $ams->getElementJs(false); ?>
</head>
<body>
<?php
if ($form->validate()) {
    
$clean $form->getSubmitValues();

    echo 
'<pre>';
    
print_r($clean);
    echo 
'</pre>';
}
$form->display();
?>
</body>
</html>

Vous pouvez utiliser des images en lieu et place des boutons standards. Remplacer les lignes :

<?php
$ams
->setButtonAttributes('add',    array('value' => 'Add >>',
                                          
'class' => 'inputCommand'
));
$ams->setButtonAttributes('remove', array('value' => '<< Remove',
                                          
'class' => 'inputCommand'
));
?>

par des lignes telles que :

<?php
$ams
->setButtonAttributes('add',    array('type' => 'image',
                                          
'src'  => '/img/add.png'
));
$ams->setButtonAttributes('remove', array('type' => 'image',
                                          
'src'  => '/img/remove.png'
));
?>