我有一個簡單的類:使用symfony2 + doctrine +表單更新db中類對象的正確方法?
class Type
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=15)
*/
private $name;
...
}
而且在數據庫中的某些「類型」的對象。 所以,如果我想改變其中的一個,我創建了新的控制器規則(如/類型/編輯/ {ID})和新動作:
public function typesEditViewAction($id)
{
...
$editedType = new Type();
$form = $this->createFormBuilder($editedType)
->add('name', 'text')
->add('id', 'hidden', array('data' => $id))
->getForm();
// send form to twig template
...
}
在那之後,我創建另一個控制器規則(如/類型/ do_edit)和動作:
public function typesEditAction(Request $request)
{
...
$editedType = new Type();
$form = $this->createFormBuilder($editedType)
->add('name', 'text')
->add('id', 'hidden')
->getForm();
$form->bind($request); // <--- ERROR THERE !!!
// change 'type' object in db
...
}
我發現了一個小問題。 Сlass'Type'沒有自動生成的setter setId()和綁定我有錯誤。
Neither the property "id" nor one of the methods "setId()", "__set()" or "__call()" exist and have public access in class "Lan\CsmBundle\Entity\Type".
現在,我從symfony2表單對象($ form)中刪除'id'字段並將其手動傳輸到模板。 在第二個控制器的操作中,我有$ form對象和'id'字段。 我不知道這樣做的「正確」方式(更新'類型'類)。請幫忙。
謝謝你對我今天所有問題的支持:) – TroyashkA
p.s.一會兒。所以我必須爲id創建一個setter?我不知道爲什麼symfony不能自動生成ID字段的設置器 – TroyashkA
http://stackoverflow.com/questions/17089307/how-do-i-configure-a-doctrine2-entity-which-extends-persistentobject- within-symf ...如果你不想爲你的實體創建getter和setter,但是我不推薦它,請參閱我的關於如何使用Doctrine的PersistentObject的回答。通過IDE集成(Eclipse PDT Extras,Sublime via Plugin,PHPStorm都有自動生成方法)或'doctrine:generate:entities'命令,生成一些getters/setters真的只需幾秒鐘。 – nifr