我有一个带有多个按钮的 Symfony 形式的集合,我需要确定单击了哪个按钮。我知道可以isClicked()在那个按钮元素上调用方法,但是我想把这个点击的按钮映射到数据类中,这可能吗?
我的基本形式:
$builder->add(
'items',
'collection',
[
'type' => new ItemForm(),
'label' => FALSE,
]
);
Run Code Online (Sandbox Code Playgroud)
ItemForm:
$builder->add(
'isRemoved',
'submit'
);
Run Code Online (Sandbox Code Playgroud)
和数据类ItemForm:
class ItemFormData
{
/**
* @var bool
*/
private $isRemoved = FALSE;
/**
* @return boolean
*/
public function isIsRemoved()
{
return $this->isRemoved;
}
/**
* @param boolean $isRemoved
*/
public function setIsRemoved($isRemoved)
{
$this->isRemoved = $isRemoved;
}
}
Run Code Online (Sandbox Code Playgroud)
isRemoved如果单击适当的按钮,我需要将 TRUE 映射到属性。我正在使用 Symfony 2.7。
事实上,我已经找到了解决方案。可以使用表单事件轻松完成:
$builder->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) {
$formData = $event->getData();
$form = $event->getForm();
if ($form['isRemoved']->isClicked()) {
$formData->setIsRemoved(TRUE);
}
}
);
Run Code Online (Sandbox Code Playgroud)