Dans un formulaire Yii, j’ai d’abord créé un bouton comme ceci
echo CHtml::button("(+)",array('title'=>"Ajouter un élément",'onclick'=>'js:ajouterElement(this);'));
ma fonction JS "ajouterElement" me sert à ajouter via JS et CSS des éléments dans ma page sans faire aucune appel au serveur.
J’ai ensuite voulu rendre plus joli mon bouton en utilisant une image, comme ceci :
echo CHtml::imageButton(Yii::app()->baseUrl.'/images/dialog-more.png',array('title'=>"Ajouter un élément",'onclick'=>'js:ajouterElement(this);'));
Et depuis j’ai un envoi au serveur de la page courante Comme cela se fait-il ? Quelle est la nuance entre les objets CHtml::button et CHtml::imageButton que je n’ai pas vu ?
D’apres le code source CHtml::imageButton est de type “submit”:
public static function imageButton($src,$htmlOptions=array())
{
$htmlOptions['src']=$src;
$htmlOptions['type']='image';
return self::button('submit',$htmlOptions);
}
quand Chtml::button ne l’est pas.
public static function button($label='button',$htmlOptions=array())
{
if(!isset($htmlOptions['name']))
{
if(!array_key_exists('name',$htmlOptions))
$htmlOptions['name']=self::ID_PREFIX.self::$count++;
}
if(!isset($htmlOptions['type']))
$htmlOptions['type']='button';
if(!isset($htmlOptions['value']) && $htmlOptions['type']!='image')
$htmlOptions['value']=$label;
self::clientChange('click',$htmlOptions);
return self::tag('input',$htmlOptions);
}