2011-08-26 106 views

回答

2

如果使用Zend_Db_Table_Abstract,和Zend的形式,你可以这样做:

$result = $model->fetchAll()->toArray(); 
$options = array(); 

foreach ($result as $value) { 
    $options[$value['id']] = $value['whatEver']; 
} 

$field = new Zend_Form_Element_Select(); 
$field->setMultiOptions($options); 

或从控制器:

$model = new My_Model_WhatEver(); 
$result = $model->fetchAll()->toArray(); 
$options = array(); 

foreach ($result as $value) { 
    $options[$value['id']] = $value['whatEver']; 
} 

$form = new My_Form_WhatEver(); 
$element = $form->getElement('whatEver'); 
$element->setMultiOptions($result); 
+1

该代码添加一个选项可能会导致奇怪的结果,因为在这样的选择框ID值会是结果集的数字索引,所有的值都是'Array'字符串。要直接在'setMultiOptions'中使用查询结果,您应该使用['fetchPairs'方法](http://framework.zend.com/apidoc/core/_Db_Adapter_Abstract.html#%5CZend_Db_Adapter_Abstract::fetchPairs()) – Fabio

+0

对,但我已经“修复”了这个例子。 fetchpairs更性感;) – opHASnoNAME

+0

谢谢!有用! – Nicky

1

您可以使用一个或多个Zend_Form_Element_Multi方法。如果你在表单

array(
    'id1' => 'value 1', 
    'id2' => 'value 2', 
); 

有一个数组可以使用setMultiOptions方法添加他们。如果您不是需要添加foreach循环内选项,你必须使用addMultiOption方法,在时间与

foreach ($array as $id => $value) { 
    $element->addMultiOption($id, $value); 
} 
相关问题