2012-04-13 181 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; 
    } 

} 
相關問題