如何使用来自不同数据库列的数据填充zend表单?

时间:2012-10-16 12:46:47

标签: zend-framework zend-form

我有一张表格:

$houserent = new Zend_Form_Element_Text('houserent');

$houserent      ->setLabel('House Rent :');
$this   ->addElement($houserent);

$tax = new Zend_Form_Element_Text('tax');
$siteName        ->setLabel('Tax :');
$this    ->addElement($tax);

$internet = new Zend_Form_Element_Text('internet');
$internet->setLabel('Internet :');
$this    ->addElement($internet);

我的数据表“test”是

id   name         value
1   house rent    100
2   tax            10
3   internet       10

我想使用来自数据库表的上述数据填充表单。但我不知道如何做到这一点。请帮我。感谢

2 个答案:

答案 0 :(得分:1)

您可以覆盖表单中的填充功能。

public function populate($data)
{
  foreach($data as $field => $value)
  {
    $this->{$field}->setValue($value);
  }
  return $this;
}

其中$ data是name =>的关联数组。值。

[编辑]

所以你现在就形成了:

<?php
  class Form_Admin_Settings_Add extends Zend_Form
  {
    public function init()
    {
      $houserent = new Zend_Form_Element_Text('houserent');
      $houserent->setLabel('House Rent :');
      $this->addElement($houserent);

      $tax = new Zend_Form_Element_Text('tax');
      $siteName->setLabel('Tax :');
      $this->addElement($tax);

      $internet = new Zend_Form_Element_Text('internet');
      $internet->setLabel('Internet :');
      $this->addElement($internet);
    }

    public function populate($data)
    {
      foreach($data as $field => $value)
      {
        $this->{$field}->setValue($value);
      }
      return $this;
    }
  }

在您的控制器中:

<?php
  //instantiate form and model
  $form = new Form_Admin_Settings_Add();
  $model = new Model_Test();

  //get results
  $results = $model->fetchAll()->toArray();
  $data = array();

  //put results into our data array as name => value
  foreach($results as $r)
  {
    $data[$r['name']] = $r['value'];
  }

  //populate our form
  $form->populate(data);
  echo $form;

答案 1 :(得分:0)

尝试这样的事情:

class Form extends Zend_Form {

   public funcition Form(){
      $houserent = new Zend_Form_Element_Text('houserent');
      $houserent->setLabel('House Rent :')
                ->setValue($this->_Data['houserent']);
      $this->addElement($houserent);
   }

   public function setData($Data){
        $this->_Data = $Data;
        return $this;
    }
}