2012-04-13 65 views
-1

我尝试做这种方式:的Zend - 填充组合框与数据库返回的数据

public function init() 
{ 
    /* Form Elements & Other Definitions Here ... */ 

    $sets_table = new Optionals_Model_DbTable_Sets(); 

    $set = new Zend_Form_Element_Select('set'); 
    $set ->setLabel('Alegeti setul de optionale:'); 

    foreach ($sets_table->getSets() as $value) { 
     echo $value->cod_set_optional; 
     $set->addMultiOption($value->cod_set_optional); 
    } 

    $submit = new Zend_Form_Element_Submit('Continua'); 

    $this->addElements (array (
      $set, 
      $submit 
    )); 
} 

,其中来自DBTABLE getSets()看起来是这样的:

public function getSets() 
{ 
    $select = $this->select(); 
    $rows = $this->fetchAll($select); 
    if (!$rows) { 
     throw new Exception("Could not find!"); 
    } 
    return $rows; 
} 

我见过这种做它HERE,但它不起作用。回声工作正常,但组合框未填充。我的代码有什么问题吗?

谢谢! 索林

回答

1

addMultiOption($option, $value)requires two parameters and you are giving it only a value.

你应该这样做:

foreach ($sets_table->getSets() as $set) { 
     $set->addMultiOption($set->id , $set->value); 
    } 

确保您getSets同时返回一个ID,并从表中的值。

+0

但我只想给ID添加到combobox – 2012-04-13 12:04:15

+0

我这样做** $ set-> addMultiOption($ value-> cod_set_optional,$ value-> cod_set_optional); ** be因为我只需要代码...谢谢 – 2012-04-13 12:06:53

0

如果您使用使用fetchall方法只使用

$list->addMultiOptions(usermodel::getInstance()->getusers()); 

整个代码会是这样

$list  = new Zend_Form_Element_Select('users'); 
$list->setLabel('Select a user') 
      ->setRequired(true) 
      ->addValidators(array(array('notEmpty',true, array('messages' => array('isEmpty' => 'Please select a User'))))); 
$list->addMultiOptions(usermodel::getInstance()->getusers()); 
die($list); 

,并在模型

class usermodel extends Zend_Db_Table 
{ 
    protected $_name    = 'users'; 
    protected static $_instance = null; 

    public function getusers() 
    { 
     $sql   =  "SELECT us.`id` AS `key`,CONCAT(us.`firstname`,' ',us.`lastname`) AS `value` FROM 
    `users` us 
          ORDER BY us.`firstname` ASC"; 
     return $this->getAdapter()->fetchAll($sql); 
    } 

    public static function getInstance(){ 
     if(!isset(self::$_instance)){ 
      $instance = new self(); 
      self::$_instance = $instance; 
     } 
     return self::$_instance; 
    } 

}