Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Symfony2中为CollectionType字段使用CallbackTransformer?_Symfony_Symfony Forms - Fatal编程技术网

如何在Symfony2中为CollectionType字段使用CallbackTransformer?

如何在Symfony2中为CollectionType字段使用CallbackTransformer?,symfony,symfony-forms,Symfony,Symfony Forms,大家好。 我无法理解如何将CallbackTransformer用于CollectionType。 我使用集合字段编写第一个表单(第二个表单)。 如何使用Callbacktransformer填写第二张表格 第一形态 <?php namespace True\AdminBundle\Form\Type; /* uses */ class FirstFormType extends AbstractType { public function buildForm (FormBu

大家好。 我无法理解如何将CallbackTransformer用于CollectionType。 我使用集合字段编写第一个表单(第二个表单)。 如何使用Callbacktransformer填写第二张表格

第一形态

<?php

namespace True\AdminBundle\Form\Type;

/* uses */

class FirstFormType extends AbstractType
{
    public function buildForm (FormBuilderInterface $builder, array $options)
    {
        $builder->add('qwe', CollectionType::class, [
            'label' => 'Any label',
            'required' => false,
            'prototype' => true,
            'allow_add' => true,
            'allow_delete' => true,
            'mapped' => false,
            'entry_type' => SecondCollectionFormType::class,
            'entry_options'  => array(
                /* send some options to second form */
            ),
        ]);
        $builder->get('qwe')
            ->addModelTransformer(new CallbackTransformer(
                function ($tagsAsArray) {
                    // Problem HERE
                    $result['qwe'][] = ['logo' => '222', 'description' => '123'];
                    return $result;
                },
                function ($tagsAsString) {
                    $result['qwe'][] = ['logo' => '222', 'description' => '123'];
                    return $result;
                }
            ))
        ;
        $builder
            ->add('submit', SubmitType::class, [
                'label' => 'Save',
            ])
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'fields' => null,
            'descriptions' => null,
            'em' => null,
            'template' =>  null,
            'sectionName' => null,
            'doctrine' => null,
            'websiteId' => null,
        ));
    }

    public function getBlockPrefix()
    {
        return 'backend_form';
    }
}

<?php
namespace True\AdminBundle\Form\Type;
/* uses */

class SecondCollectionFormType extends AbstractType
{
    public function buildForm (FormBuilderInterface $builder, array $options)
    {
        $builder->add('logo', TextType::class, [
            'label' => $label,
            'required' => false,
            'mapped' => false,
            ]);
        $builder->add('description', TextareaType::class, [
            'label' => $label,
            'required' => false,
            'mapped' => false,
            ]);
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'fields' => null,
            'descriptions' => null,
        ));
    }

    public function getBlockPrefix()
    {
        return 'backend_collection_form';
    }

}