Sujet : Hoa_Form / élément select / récupération de valeurs validateurs
Hey,
je voudrais deux petits coup de pouces, déjà le premier, comment ajouter un validateur sur un élément select alors que ce dernier est déclaré via tableau: (je souhaite que la valeur soit différente de 0)
$this->addElement(array(
'type' => Hoa_Form::ELEMENT_SELECT,
'attribute' => array(
'id' => 'idcat',
'name' => 'idcat'
),
'option' => $options,
'label' => 'Catégorie de la brève :'
));Ensuite, je ne sais pas pourquoi, mais je n'arrive pas à récupérer ma valeur une fois le formulaire validé (alors que les autres valeurs oui)
:
$idcat = $form->get('idcat')->getValue();Me renvoi un array vide...
(et j'ai vérifié, les données post sont bien remplies)
J'aurais aussi par la suite des question sur la gestion des erreurs (pour l'instant je n'ai qu'une seule erreur affichée sans que je ne fasse quoi que ce soit, sur les autres champs, pas de message d'erreur), mais chaque choses en son temps!
Merci d'avance pour vos réponses ![]()
Les codes ci-joints:
Mon modèle de form:
<?php
import('Form.~');
import('Form.Element.InputText');
import('Form.Element.Textarea');
import('Form.Element.InputSubmit');
importModule('Database.Utf8');
class FormBreve extends Hoa_Form {
public function __construct ( $idBreve = 0 , $titre = '', $idCat = 0, $contenu = '') {
/**
* On définit notre action.
*/
parent::__construct(PUBLIC_URL.'Admin/Editbreve.html');
/**
* On crée notre champ pour le titre de la breve
*/
$title = new Hoa_Form_Element_InputText('title');
$title->setLabel('Titre de la brève :')
->setValidator('Empty')
->setValidator(array(
'StringLength' => array(
'min' => 1,
'max' => 250
)
));
/**
* On ajoute notre champ pour le titre de la breve
*/
$this->addElement($title);
$this->addElement(array(
'type' => Hoa_Form::ELEMENT_INPUT_HIDDEN,
'attribute' => array(
'name' => 'idBreve',
'value' => $idBreve
)
));
$db = Hoathis_Database_Utf8::getLastInstance();
try {
$statement = $db->query(
'SELECT *
FROM categories'
);
$categories = $statement->fetchAll();
}
catch ( Hoa_Database_Dal_Exception $e ) {
$statement->closeCursor();
}
$options[0]='Choisissez une catégorie';
foreach($categories as $cat){
if($cat['id_categorie']==$idCat){
$options[$cat['id_categorie']]=array(
'text'=>$cat['nom'],
'selected' => true
);
}
else {
$options[$cat['id_categorie']]=$cat['nom'];
}
}
/**
* On crée notre champ de contenu de la breve
*/
$content = new Hoa_Form_Element_Textarea('content');
$content->setAttribute('rows', 10)
->setAttribute('cols', 75)
->setLabel('Contenu de le breve :')
->setValidator('Empty');
/**
* On ajoute notre champ de contenu de la breve
*/
$this->addElement($content);
/**
* On crée le bouton de soumission.
*/
$this->addElement(array(
'type' => Hoa_Form::ELEMENT_INPUT_SUBMIT,
'attribute' => array(
'name' => 'save',
'value' => 'Sauvegarder'
)
));
}
}l'appel:
$params = $this->getParameters();
$idBreve = !empty($params['data.array']['idBreve']) ? (int)$params['data.array']['idBreve'] : 0;
/**
* On récupère notre formulaire.
*/
$form = new FormBreve($idBreve);
/**
* On donne formulaire à la vue.
*/
$this->view->form = $form;
/**
* On fait la vérification des données.
*/
if($form->isValid()) {
$title=$form->get('title')->getValue();
$content = $form->get('content')->getValue();
$idcat = $form->get('idcat')->getValue();
$idBreve = $form->get('idBreve')->getValue();
// update
if($idBreve > 0){
}
// insert
else {
}
}