Php 将Symfony表单单击的按钮映射到数据类
我有一个Symfony表单的集合,其中包含多个按钮,我需要确定单击了哪个按钮。我知道可以在按钮元素上调用Php 将Symfony表单单击的按钮映射到数据类,php,forms,symfony,Php,Forms,Symfony,我有一个Symfony表单的集合,其中包含多个按钮,我需要确定单击了哪个按钮。我知道可以在按钮元素上调用isClicked()方法,但我想将这个单击的按钮映射到数据类中,这可能吗 我的基本表格: $builder->add( 'items', 'collection', [ 'type' => new ItemForm(), 'label' => FALSE,
isClicked()
方法,但我想将这个单击的按钮映射到数据类中,这可能吗
我的基本表格:
$builder->add(
'items',
'collection',
[
'type' => new ItemForm(),
'label' => FALSE,
]
);
ItemForm
:
$builder->add(
'isRemoved',
'submit'
);
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;
}
}
和项目表单的数据类
:
$builder->add(
'isRemoved',
'submit'
);
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;
}
}
如果单击了相应的按钮,我需要将TRUE映射到isRemoved
属性。我正在使用Symfony 2.7。彼得
我不确定你能不能那样做
在我看来,您可以简单地执行以下操作:
在表单中创建隐藏字段:
$builder->...
->add('isRemoved', 'hidden')
->...;
在模板中,只需简单渲染即可:
{{ form_rest(form) }}
并将其字段设置为JS:
$('#<form_selector>').on('submit', function () {
$('#<is_removed_vields_selector>').val();
});
$('#')。在('submit',函数(){
$('#').val();
});
或者使用按钮点击事件。事实上,我已经找到了解决方案。可以使用表单事件轻松完成此操作:
$builder->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) {
$formData = $event->getData();
$form = $event->getForm();
if ($form['isRemoved']->isClicked()) {
$formData->setIsRemoved(TRUE);
}
}
);