有没有办法检查控制器中是否存在表单字段?
我有一些提交按钮,但根据对象中的数据,将显示和创建相关的按钮。
FormType.php
$builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event) {
/** @var ObjectInfo $tab */
$tab = $event->getData();
$form = $event->getForm();
if (some condition) {
//No Value has been set or NULL
$form->add('submit_second', 'submit', array(
'label' => 'submit',
))
}
Controller.php这样
if ($overviewForm->get('submit_second')->isClicked()) {
// do something
}
我也试过
if (
!is_null($overviewForm->get('submit_second')) &&
$overviewForm->get('submit_second')->isClicked()
) {
提交我
错误
Child "submit_second" does not exist.
答案 0 :(得分:4)
如果$form->has('field')
(由@jahller
建议)不起作用,您可以尝试将逻辑用于" 某些条件"进入你的实体/模型的方法,然后在你需要的地方调用该方法。
您应该可以访问FormType
和Controller
中的模型/实体。
答案 1 :(得分:0)
您还可以使用try catch
。我真的不确定何时引入了OutOfBounds异常。但我在3.4
try {
$field = $form->get('nonExistantChild');
// Then you know the field exists
} catch (Symfony\Component\Form\Exception\OutOfBoundsException $e) {
// Field doesn't exists.
}
答案 2 :(得分:0)
您可以处理数据,因为无论如何大部分时间都需要它。
if (!array_key_exists('nonExistantChild', $data = $event->getData())) {
// No need to do anything then
return;
}
// Can now do something with $data then