Странное поведение с Zend_Form_Element_Select

У меня странное поведение с Zend Form. Поля, которые должны быть заполнены кнопкой "выбрать", остаются пустыми (NULL) в базе данных, а значение одного из них подставляется в другое поле. Вот мой код:

public function init()
{
    $this->setName('projet');
    $id = new Zend_Form_Element_Text('codeProjet');  //works great
    $id->setLabel('Code du Projet');
    $nomproj = new Zend_Form_Element_Text('nomProjet');  //is filled with the codeEntreprise value
    $nomproj->setLabel('Nom du Projet')
    ->setRequired(true)
    ->addFilter('StripTags')
    ->addFilter('StringTrim');
    $deb = new Zend_Form_Element_Text('dateDebut');   //works great
    $deb->setLabel('Date du début')
    ->setRequired(true)
    ->addFilter('StripTags')
    ->addFilter('StringTrim');
    $fin = new Zend_Form_Element_Text('dateFin');   //works great
    $fin->setLabel('Date de fin')
    ->setRequired(true)
    ->addFilter('StripTags')
    ->addFilter('StringTrim');
    $montant = new Zend_Form_Element_Text('montantPrevu');  //works great
    $montant->setLabel('Montant prévu')
    ->setRequired(true)
    ->addFilter('StripTags')
    ->addFilter('StringTrim');
    $chef = new Zend_Form_Element_Select('matriculeChef');  //remains empty
    $options=array('select'=>'[select]');
    $chef->setLabel('Chef de Projet')
    ->setRequired(true);

    $boss = new Application_Model_DbTable_Developpeur();
    foreach($boss->fetchAll() as $p)
        $options[$p['matricule']]=$p['prenom'].' '.$p['nom'];
    var_dump($options);
    $chef->addMultioptions($options);
    $chef->setValue($selected);

    $boite = new Zend_Form_Element_Select('codeEntreprise');   //remains empty
    $option=array('select'=>'[select]');
    $boite->setLabel('Nom de l\'entreprise');
    $entr = new Application_Model_DbTable_Entreprise();
    foreach($entr->fetchAll() as $p)
        $option[$p['codeEntreprise']]=$p['nom'];
    var_dump($option);
    $boite->addMultioptions($option);

    $envoyer = new Zend_Form_Element_Submit('envoyer');
    $envoyer->setAttrib('id', 'boutonenvoyer');

    $this->addElements(array($id, $nomproj,$deb,$fin,$montant,$chef,$boite, $envoyer));
}

У вас есть идеи, почему одно поле заполнено неправильным значением, а некоторые остаются пустыми в базе данных? Спасибо.


person user1319182    schedule 17.05.2012    source источник
comment
Проверьте имена переменных, вы повторно используете переменные в одной и той же области. $p и $options используются для нескольких элементов в одной области.   -  person RockyFord    schedule 19.05.2012


Ответы (2)


в следующей строке:

$chef->setValue($selected);

откуда взялся $selected?

person xena    schedule 17.05.2012

Вы должны использовать $form->populate($dataFromDb or $_POSTdata) для заполнения значений IMO.

person Tomáš Fejfar    schedule 18.05.2012