0
我有一個實體(讓它成爲用戶)與文本字段(讓它是「頭像」)。用Symfony表格添加僞元素
現在我想創建用於編輯用戶實體的Symfony表單類型,但是我不想將「avatar」字段編輯爲文本。相反,我想要一個複選框「」。
如果用戶選中「清除字段頭像」,當文本字段「頭像」將被清除。
怎麼辦?謝謝。
我有一個實體(讓它成爲用戶)與文本字段(讓它是「頭像」)。用Symfony表格添加僞元素
現在我想創建用於編輯用戶實體的Symfony表單類型,但是我不想將「avatar」字段編輯爲文本。相反,我想要一個複選框「」。
如果用戶選中「清除字段頭像」,當文本字段「頭像」將被清除。
怎麼辦?謝謝。
只需clear_avatar
字段添加到您的形式,並且不要將其映射到實體
$builder->add('clear_avatar', 'checkbox', array('mapped' => false));
然後你就可以得到它的價值和重置化身數據綁定
$form->bind($request);
if ($form->isValid()) {
$user = $form->getData();
if ($form->get('clear_avatar')->getData()) {
$user->clearAvatar();
}
...
}
後也可以添加聽衆FormEvents::POST_BIND
做同樣的事情沒有控制器修改。類似於:
$builder->addEventListener(FormEvents::POST_BIND, array($this, 'onPB'));
..
public function onPB (FormEvent $ev)
{
$entity = $ev->getData();
if ($ev->getForm()->get('clear_avatar')->getData()) {
$entity->clearAvatar();
}
}
}
我認爲最好添加FormEvents :: POST_BIND。請說明如何做到這一點? – Medvedev
增加了一個示例代碼 – Ziumin
非常感謝你! – Medvedev