Как получить данные из неотображенного поля в вложенной форме - PullRequest
0 голосов
/ 11 апреля 2019

Я хотел бы знать, возможно ли получить данные из неотображенного поля в вложенной форме.

Вот основная форма:

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 Ответ

1 голос
/ 12 апреля 2019

поле «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()
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...