Symfony3:添加多个'分组ChoiceType的选项

时间:2016-03-16 11:16:56

标签: php forms symfony

我想无法通过分组选择进行多项选择,但我收到错误:

"无法转换属性路径的值" destinataires":预期数组。"

代码:

    foreach ($manager->getRepository('CommonBundle:Compte')->findAll() as $value)
        $arrayCompte[$value->getPseudo()] = $value->getPseudo();

    foreach ($manager->getRepository('CommonBundle:Profil')->findAll() as $value)
        $arrayProfil[$value->getNom()] = $value->getNom();

    $arrayDestinataires['Profil'] = $arrayProfil;
    $arrayDestinataires['Compte'] = $arrayCompte;

    $ticketForm = $this->createFormBuilder($ticket)
    ->add('priorite',       ChoiceType::class, array(
        'multiple' => true, // working
        'choices' => array(
            'Faible' => 0,
            'Moyen' => 1,
            'Fort' => 2)))
    ->add('destinataires',  ChoiceType::class, array(
        'multiple' => true, //not working
        'choices' => $arrayDestinataires))

请注意,如果没有" '多个' =>真, "它有效。

请注意,某些选项如" '已展开' =>是的 ",有效。

编辑: 变量" destinataires'是一个ManyToMany关系。显然,这就是我收到错误的原因。

我需要创建一个自定义fromBuilder这个部分的重载并在我这边处理它。

2 个答案:

答案 0 :(得分:0)

这意味着数组$ arrayDestinataires不能呈现为选择列表。就我在你的代码中看到的而言,这将是你的数组的最终结果

$arrayDestinataires = array(
     'Profil' => array (.....),
     'Compte' => array (.....)
)

这个结构不能随意渲染,因为Profil和Compte可以是值,但相应的数组不能转换为字符串。

希望这对你有所帮助。

答案 1 :(得分:0)

问题是“destinataires”是与“Compte”对象的ManyToMany关系,我想将“Profil”实体添加为用户的快捷方式。 为了解决这个问题,我在实体中添加了一个数组变量来存储表单结果并使用它。