如何在 Symfony2 中向实体表单添加其他非实体字段

2022-08-30 13:04:36

我用实体中的一个元素创建了表单:

$promo = new Promo();

$form = $this->createFormBuilder($promo)
        ->add('code', 'text')
        ->getForm();

我想添加文件元素(实体中不存在此字段)。当我这样做时:

$form = $this->createFormBuilder($promo)
        ->add('code', 'text')
        ->add('image', 'file')
        ->getForm();

我有一个错误:既不是属性“image”,也不是方法“getImage()”。如何添加此字段?


答案 1

使用映射

$form = $this->createFormBuilder($promo)
    ->add('code', 'text')
    ->add('image', 'file', array(
                "mapped" => false,
            ))
    ->getForm();

在旧的 Symfony 版本(2.0 及更早版本)中,使用property_path

$form = $this->createFormBuilder($promo)
    ->add('code', 'text')
    ->add('image', 'file', array(
                "property_path" => false,
            ))
    ->getForm();

“property_path”在 Symfony 2.3 中被删除


答案 2

使用property_path选项:

$builder->add('image', 'file', [
    'property_path' => false,
]);

推荐