【问题标题】:How do I set the 'value' in my Zend form checkbox?如何在 Zend 表单复选框中设置“值”?
【发布时间】:2012-03-29 16:23:04
【问题描述】:

事实证明 Zend Form 对我来说有点棘手,尽管我最近一直在使用它......

我有这个表格,我正在尝试为它动态创建几个复选框。一切正常,但我似乎无法更改“值”属性。

在我的 Zend 表单类中,我有这个 sn-p...

// 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”行移动到几个不同的位置,以便在表单元素呈现之前设置值,但我没有运气让它工作。这对我来说是值得的,因为我需要在我的应用程序的许多领域进行相同类型的操作。我也会这样做有点不同,但我正在重构另一个应用程序并试图保持一些东西不变(例如数据库)。

非常感谢任何帮助 谢谢

【问题讨论】:

    标签: php zend-framework zend-form


    【解决方案1】:

    您可以尝试覆盖“checkedValue”和“uncheckedValue”。检查这个reference

    $this->addElement('checkbox', 'psychoticsymptom', array(
                    'label' => 'psychoticsymptom',
                    'name' => 'psychoticsymptom',
                    'checkedValue' => 'checked Value',
                    'uncheckedValue' => 'unchecked Value'
            ));
    

    【讨论】:

    • 完全做到了!谢谢...我在“foreach”循环中将“setValue”更改为“setCheckedValue”。这也将解决其他部分中的相同问题,我知道我可以让它的行为与旧应用程序完全一样,当然还有改进。但是它们有一定的局限性,它是一个医疗应用程序(如果你不知道的话:))而且这些东西可能有点有趣。再次感谢...
    【解决方案2】:

    您似乎只有一个 psychoticsymptom 元素“复选框”,您也为每个 $this->PsychoticSymptomsList 添加(更改)值。

    也许您最好使用多复选框元素。

    【讨论】:

    • 好主意,我将不得不检查表单是否允许检查多个。谢谢!
    • 我可能会使用复选框,我的一些表单在范围上不是很灵活,尽管我必须与客户核实......他们可能也不希望能够检查多个框.想知道单选按钮设置是否有效?必须调查这个...
    猜你喜欢
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多