Php 是否可以在symfony中自动为表单提交添加值?

Php 是否可以在symfony中自动为表单提交添加值?,php,forms,symfony,Php,Forms,Symfony,我想知道我是否可以自动添加值​​在symfony下提交表格时 例如 实体产品 private ref; private price; private quantity; private total; 产品类型 public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('ref') ->add('price') ->add('quantity')

我想知道我是否可以自动添加值​​在symfony下提交表格时

例如

实体产品

private ref;
private price;
private quantity;
private total;

产品类型

public function buildForm(FormBuilderInterface $builder, array $options)
{
 $builder
 ->add('ref')
 ->add('price')
 ->add('quantity')
 ...
 ->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {

  $form = $event->getForm();
  $product = $event->getData();

  $v = $product['price'] * $product['quantity'];

  $form->add('total');
  $form->get('total')->setData($v);
 }

产品控制器

$form = $this->createForm(ProductType::class, $product);

$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {

**dd($form->getData());**

我想检索所有的值​​在$form->getData()中输入: -参考号 -价格 -数量 -总计(自动添加此字段及其值)

尽管我读了很多书,但我还是不明白它是如何工作的。可能吗

我从来没有得到所有的数据

$form->add('total');
$form->get('total')->setData($v);

并将事件更改为
POST\u SUBMIT


此外,如果您想直接将表单绑定到对象,请查看属性,因为我知道您拥有产品实体(或简单的类)。因此,您可以创建一个getter,返回
price*quantity
的值,并在表单提交后在控制器上调用它

class Product {
    private $ref;
    private $price;
    private $quantity;

    // getters and setters or another logic what you need

    public function getTotal() {
        return $this->price * $this->quantity;
    }
}
class Product {
    private $ref;
    private $price;
    private $quantity;

    // getters and setters or another logic what you need

    public function getTotal() {
        return $this->price * $this->quantity;
    }
}
class ProductType extends AbstractType {
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
            ->add('ref')
            ->add('price')
            ->add('quantity');
        
        // other code
    }
}
class ProductController extends AbstractController {
    public function __invoke(Request $request) {
        $form = $this->createForm(ProductType::class, $product);
        $form->handleRequest($request);
        
        if ($form->isSubmitted() && $form->isValid()) {
            dd($product->getTotal());
        }
        
        // other code
    }
}