【问题标题】:Can't set selected value for Zend_Form dropdown element无法为 Zend_Form 下拉元素设置选定值
【发布时间】:2012-09-07 04:20:55
【问题描述】:

在编辑表单中的所有字段时,除了下拉菜单外,所有字段均已正确填充,但我不知道出了什么问题。

这是我的表格

        $katModel = new Model_Kategoria();
        $kategorie = $katModel->getKategorie(0);

        $katList = new External_Form_Element_SelectAttribs('kategoria');
        $katList->setLabel('Kategoria: ');
        $katList->isRequired(true);
        if(isset($kategorie)) {
            foreach($kategorie as $k) {
                $katList->addOption($k['id'], $k['kategoria'], array('class' => 'level-' . $k['depth']));
            }
        }
        $this->addElement($katList);

我正在使用自定义元素,因此我可以将类添加到“选项”

class External_Form_Element_SelectAttribs extends Zend_Form_Element {

public $options = array();

public $helper = 'selectAttribs';

/**
 * Adds a new <option>
 * @param string $value value (key) used internally
 * @param string $label label that is shown to the user
 * @param array $attribs additional attributes
 */
public function addOption ($value,$label = '',$attribs = array()) {
    $value = (string) $value;
    if (!empty($label)) $label = (string) $label;
    else $label = $value;
    $this->options[$value] = array(
        'value' => $value,
        'label' => $label
    ) + $attribs;
    return $this;
}
}

在我的控制器的编辑操作中,我有

$zadanie = $zadanieModel->find($id)->current();
$zadanieForm->populate($zadanie->toArray());

它正确地填充除那个之外的所有字段

我试过了

$zadanieForm->kategoria->setValue(7);
$zadanieForm->setDefault('kategoria', 7);   

但是没有用。

现在我用我正在使用的自定义元素猜测它(在谷歌上找到了代码),但我不知道如何修改它,所以它对我有用。

【问题讨论】:

  • 这段代码的工作也依赖于这个“selectAttribs”视图助手。你能展示一下里面有什么吗?
  • 你说得对,问题出在助手身上。它非常混乱,作者使用原始的zend函数来渲染元素并删除了它的许多功能,包括设置“selected”属性。幸运的是我能够修复它
  • 写下你自己问题的答案并接受它!

标签: zend-framework zend-form zend-form-element zend-form-select


【解决方案1】:

我使用以下代码来创建从 1 到 10 的数字下拉列表。 然后我选择 9 作为默认值:

$var = new Zend_Form_Element_Select('ElementName');

    for ($i = 1; $i <=10; $i++) {
        $priority->addMultiOption($i,$i);
    }

    $priority->setValue(9);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2011-02-21
    • 2020-03-04
    • 1970-01-01
    相关资源
    最近更新 更多