2013-04-03 63 views
4

我想爲我的應用程序創建一個Zend Framework 2的表單,並且我擁有了所有的東西,表單正在顯示,但是我的問題是我無法結合即來自數據庫Zend框架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 

我的顯示屏邏輯是簡單的初始形式值如下所示

$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; 

現在我試圖設置從我的對象,我結合的形式的數據我控制器動作

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

這似乎工作不知何故,並在視圖中顯示我的價值觀。所以我只想知道我在第一種方法中做了什麼錯誤?在此先感謝:)

+0

您可以給我們提供更多關於'$ myUserDetails'對象的信息。它是一個對象,如果是的話,什麼接口實現? –

+0

這是我的自定義模型的一個對象,只有列名稱getter setter和exchangeArray和getArrayCopy函數。是否需要實現接口來綁定值?正如我認爲getArrayCopy是一個函數,它只是將Object轉換爲一個可綁定到表單數據的數組。目前我還沒有實現任何接口。謝謝 – amit1310

+1

我想'getArrayCopy()'就夠了。我看到'$ myUserDetails-> getArrayCopy();'返回一個數組,並將'data'鍵傳遞給'$ form-> setData($ data ['data']);''。這可能是問題所在。試着準備你的'getArrayCopy()'來只返回db字段/表單域的參數。 –

回答

3

感謝@Stoyan Dimov我解決了這個問題。基本上,這是用在我的模型getArrayCopy功能,因爲我是direcly返回其封閉在一個指數「數據」

所以我改變了我的getArrayCopy到

public function getArrayCopy() { 
     $data = get_object_vars($this); 
     return $data['data']; 
    } 

瞧它工作的數組。

再次感謝Stoyan Dimov

+0

很高興幫助:) –