如何以嵌入形式从非映射字段中检索数据

时间:2019-04-11 15:05:01

标签: forms symfony

我想知道是否有可能以嵌入的形式从非映射字段中获取数据。

这是主要形式:

class PlayedLifeScoreType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        //->add('nom')
        //->add('prenom')
        // NOTE: Use form collection to allow multiple `played` forms per JoueurType
        ->add('playeds', CollectionType::class, [
            'entry_type' => PlayedLifeType::class,
            'label' => false,
        ])
        ->add('submit', SubmitType::class, [
            'attr' => ['class' => 'save'],
        ]);
}

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([
        'data_class' => Partie::class,
    ]);
}
}

和嵌入的一个:

class PlayedLifeType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        /*->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
        $form = $event->getForm();
        $form->add('joueur', null, array(
             'data' => $event->getData() ?: options['joueur']
         ))*/
        //->add('joueur')
        ->add('joueur', TextType::class, [
            'label' => false,
            'disabled' => 'true',
            'attr' => ['class' => 'tinymce'],
        ])
        ->add('max')              
        ->add('score')
        ->add('round', IntegerType::class,[
            'mapped' => false,
            'label' => 'Round',
        ])

        ;
    //});
}

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([
        'data_class' => Played::class,
        'joueur' => null
    ]);
} 
}

并且想要从“回合”中获取数据。我这样尝试过,但不起作用:

$r = $mainForm->get('playeds')->get("round")->getData();

我收到此错误:

  

子“回合”不存在。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

字段“ playeds”是一个CollectionType。 因此,对于每个条目,都有一个“舍入”值 要访问此内容,您应该执行以下操作:

 foreach ($mainForm->get('playeds') as $played) {
    //you can access round here with $played->get('round')->getData()
    //Or the Played object with $played->getData()
 }