Php Zend framework 2:表单绑定未设置从数据库提取的值

Php Zend framework 2:表单绑定未设置从数据库提取的值,php,zend-framework2,Php,Zend Framework2,我想用Zend Framework 2为我的应用程序创建一个表单,我已经准备好了所有东西,表单正在显示,但我的问题是我无法绑定来自数据库的初始表单值 $myUserDetails = <details of my user coming from DB>; $form = $form->bind($myUserDetails); //This should set the values for the form to display but it doesnt $myUser

我想用Zend Framework 2为我的应用程序创建一个表单,我已经准备好了所有东西,表单正在显示,但我的问题是我无法绑定来自数据库的初始表单值

$myUserDetails = <details of my user coming from DB>;
$form = $form->bind($myUserDetails); //This should set the values for the form to display but it doesnt
$myUserDetails=;
$form=$form->bind($myUserDetails)//这应该为表单设置要显示的值,但它不会
我的显示逻辑很简单,如下所示

$form = $this->form;
$form->setAttribute('action', 
$this->url('<routename>',array('action'=>'<actionname>')));
$form->prepare();
echo $this->form()->openTag($form) . PHP_EOL;
echo $this->formRow($form->get('email_id')) . PHP_EOL;
echo $this->formRow($form->get('dob')) . PHP_EOL;
echo $this->formRow($form->get('gender')) . PHP_EOL;
echo $this->formRow($form->get('user_page_name')) . PHP_EOL;
echo $this->formInput($form->get('submit')) . PHP_EOL;
echo $this->form()->closeTag($form) . PHP_EOL;
$form=$this->form;
$form->setAttribute('action',
$this->url(“”,数组('action'=>“”));
$form->prepare();
echo$this->form()->openTag($form)。PHP_EOL;
echo$this->formRow($form->get('email\u id'))。PHP_EOL;
echo$this->formRow($form->get('dob'))。PHP_EOL;
echo$this->formRow($form->get('gender'))。PHP_EOL;
echo$this->formRow($form->get('user\u page\u name'))。PHP_EOL;
echo$this->formInput($form->get('submit'))。PHP_EOL;
echo$this->form()->closeTag($form)。PHP_EOL;
现在,我尝试在控制器操作中设置绑定到窗体的对象中的数据

$myUserDetails = <details of my user coming from DB>;
$form = $form->bind($myUserDetails);
$data = $myUserDetails->getArrayCopy();
$form->setData($data['data']);
$myUserDetails=;
$form=$form->bind($myUserDetails);
$data=$myUserDetails->getArrayCopy();
$form->setData($data['data']);

这似乎以某种方式起作用,并在视图中显示我的值。所以我只想知道我在第一个方法中做错了什么?提前感谢:)

感谢@Stoyan Dimov,我解决了这个问题。基本上是在我的模型中使用getArrayCopy函数,因为我直接返回一个包含在索引“data”中的数组

所以我把我的getArrayCopy改为

public function getArrayCopy() {
        $data = get_object_vars($this);
        return $data['data'];
    }
瞧,成功了


再次感谢Stoyan Dimov

您能否为我们提供有关
$myUserDetails
对象的更多信息。它是一个对象吗?如果是,接口实现了什么?它是我的自定义模型的一个对象,只有列名getter setters、exchangearlay和getArrayCopy函数。是否需要实现仅绑定值的接口?我认为getArrayCopy是一个函数,它只是将对象转换为一个数组,该数组可以绑定到表单的数据。目前我还没有实现任何接口。我认为,感谢您删除
getArrayCopy()
就足够了。我看到
$myUserDetails->getArrayCopy()
返回一个数组,然后将
数据
键传递到
$form->setData($data['data'])。这可能就是问题所在。尝试准备
getArrayCopy()
以仅返回db字段/表单字段的参数。