void HTML_QuickForm_advmultiselect::setButtonAttributes (
string $button
,
mixed
$attributes
= NULL
)
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 :
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'.
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 '.
Le type de bouton. Le défaut est 'button' (peut être aussi bien 'button' que 'image').
Un identificateur de classe CSS dans une de vos feuilles de styles.
L'URL de l'image utilisée.
Identificateur du bouton, soit 'add', 'remove', 'all', 'none', 'toggle', 'moveup' 'movedown' 'movetop' ou 'movebottom'
(optionnel) Soit une chaîne de caractère clef=valeur, soit un tableau associatif de couple(s) clef=valeur, correspondant à des attributs HTML.
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 |
Depuis la version 0.4.0 (2005-06-25)
This function can not be called statically.
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'
));
?>