Как мне установить «значение» в моем поле формы Zend? - PullRequest
3 голосов
/ 29 марта 2012

Форма Zend оказывается для меня немного хитрой, даже если я работаю с ней в последнее время ...

У меня есть эта форма, и я пытаюсь динамически создать несколько флажков дляЭто.Это работает хорошо, за исключением того, что я не могу заставить атрибут 'value' измениться.

В моем классе формы Zend у меня есть этот фрагмент ...

// psychotic symptoms
        $this->addElement('checkbox', 'psychoticsymptom', array(
                'label' => 'psychoticsymptom',
                'name' => 'psychoticsymptom',
        ));

На мой взгляд(phtml) Я называю это так ...

<div class="element">
    <?php // Psychotic Symptoms
    $Criteria = new Criteria();
    $Criteria->add( DictionaryPeer::CATEGORY, 'MAR: Psychotic Symptoms' );
    $Criteria->addAscendingOrderByColumn( 'Ordinal' );
    $this->PsychoticSymptomsList = DictionaryPeer::doSelect( $Criteria );

    foreach( $this->PsychoticSymptomsList as $Symptom ) {

        $form->psychoticsymptom->setValue($Symptom->getDictionaryId());
        $form->psychoticsymptom->setAttrib('name', $Symptom->getWord());

        echo $Symptom->getDictionaryId(); // prove my id is coming through... (it is)
        $form->psychoticsymptom->getDecorator('label')->setTag(null);

        echo $form->psychoticsymptom->renderViewHelper();
        $form->psychoticsymptom->setLabel($Symptom->getWord());
        echo $form->psychoticsymptom->renderLabel();
        echo '<br />';
                    }
        ?>
    </div>

Кажется, все работает нормально, за исключением того, что атрибут value в каждом флажке отображает значение '1'.Я попытался переместить строку 'setValue' в несколько разных позиций, чтобы установить значение до визуализации элемента формы, но мне не повезло заставить это работать.Это стоит каких-то усилий для меня, потому что мне нужно выполнять одинаковые операции во многих областях моего приложения.Я бы тоже сделал это немного по-другому, но я перефакторинг другого приложения и пытаюсь сохранить некоторые вещи без изменений (например, базу данных).

Любая помощь очень ценится Спасибо

Ответы [ 2 ]

9 голосов
/ 29 марта 2012

вы можете попробовать перезаписать значения «selectedValue» и «uncheckedValue». отметьте это ссылка

$this->addElement('checkbox', 'psychoticsymptom', array(
                'label' => 'psychoticsymptom',
                'name' => 'psychoticsymptom',
                'checkedValue' => 'checked Value',
                'uncheckedValue' => 'unchecked Value'
        ));
1 голос
/ 29 марта 2012

Похоже, у вас есть только один "флажок" элемента psychoticsymptom, к которому вы добавляете (изменяете) значение для каждого $ this-> PsychoticSymptomsList.

Возможно, вам лучше использовать вместо этого элемент multicheckbox.

...