Symfony 类型为“的预期参数”;标量;

Symfony 类型为“的预期参数”;标量;,symfony,Symfony,我必须在填写注册表时保存一个值。 在控制器中,我有: <?php $heritageBuilder = $this->createFormBuilder($heritage) ->add('category', 'choice') ->add('designation', 'text') ->add('value', 'text'); $heritageFormBuilder = $heritageBuilder->getForm();

我必须在填写注册表时保存一个值。 在控制器中,我有:

<?php
$heritageBuilder = $this->createFormBuilder($heritage)
    ->add('category', 'choice')
    ->add('designation', 'text')
    ->add('value', 'text');
$heritageFormBuilder = $heritageBuilder->getForm();
$request = $this->get('request');
if ($request->getMethod() == 'POST') {
    $heritageFormBuilder->bindRequest($request);
...
}
?>
它不起作用,因为category是另一个表类型的外键HeritageCategory 因此,我对我收到的价值修改如下,正确的格式为:

<?php
$request = $this->get('request');
if ($request->getMethod() == 'POST') {
    $post = $request->request->get('form');
    $post['category'] = $em->getRepository('PrismeMigrationBundle:HeritageCategory')->find((int)$post['category']);
    $request->request->set('form', $post);

    $heritageFormBuilder->bindRequest($request);
}
?>
但我得到了这个错误: 给定类型为“scalar”、“Prisme\MigrationBundle\Entity\HeritageCategory”的预期参数

如果对BindRequest进行了正确的修改,我应该怎么做


提前谢谢你

我不确定这是否能解决整个问题,但我希望这是一个开始

而不是:

$heritageBuilder = $this->createFormBuilder($heritage)
    ->add('category', 'choice')
    ->add('designation', 'text')
    ->add('value', 'text');
尝试:

“选择”类型是为简单的标量信息数组(“男性”/“女性”等)而设计的。但“范畴”不是标量;它是一个完整的实体,因此“实体”类型在这里更有意义

以下是实体字段类型的单据:

哦,还要确保HeritageCategory有一个toString()方法。表单将需要它来呈现标签

["form"]=>
      array(4) {
        ["category"]=>
        object(Test\MonBundle\Entity\HeritageCategory)#427 (6) {
          ["id":"Test\MonBundle\Entity\HeritageCategory":private]=>
          int(4)
          ["parent":"Test\MonBundle\Entity\HeritageCategory":private]=>
          int(3)
          ["code":"Test\MonBundle\Entity\HeritageCategory":private]=>
          string(0) ""
          ["name":"Test\MonBundle\Entity\HeritageCategory":private]=>
          string(21) "Résidence principale"
          ["bg":"Test\MonBundle\Entity\HeritageCategory":private]=>
          int(4)
          ["bd":"Test\MonBundle\Entity\HeritageCategory":private]=>
          int(5)
        }
$heritageBuilder = $this->createFormBuilder($heritage)
    ->add('category', 'choice')
    ->add('designation', 'text')
    ->add('value', 'text');
$heritageBuilder = $this->createFormBuilder($heritage)
    ->add('category', 'entity')
    ->add('designation', 'text')
    ->add('value', 'text');