我为两个操作(创建和编辑(创建了一个symfony表单,并且我只想在编辑时将表单的一个字段设置为可选字段
假设您使用的是data_class
和条令:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$object = $options['data'] ?? null;
$isEdit = $object && $object->getId();
$builder->add('name', null, [
'required' => !$isEdit,
...
]);
}
在创建时,表单要么不包含基础对象,要么不包含id的基础对象,因为在构建表单时,对象尚未保存到数据库中。
在编辑时,表单包含一个id为的底层对象
因此,从具有$options['data']
的表单中获取底层对象,并检查它是否为空并具有id。
如果存在一个id为的对象,我们知道我们正在编辑($isEdit
将为true(,并且可以使用它来设置所需的属性。