• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Symfony - CollectionType - różne typy pól - ChoiceType , TextType

0 głosów
144 wizyt
pytanie zadane 24 kwietnia 2020 w PHP przez XiverKi Bywalec (2,050 p.)

Hej, mam pewien problem z CollectionType.

Mianowicie, chciałem skorzystac z CollectionType + DataTransformer

class EditPostType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        $builder
            ->add('type', null, [
                'disabled' => true
            ])
            ->add('kind', null, [
                'disabled' => true
            ])
            ->add('title', TitleTextType::class)
            ->add('description', DescriptionTextType::class)
            ->add('attributes', AttributesCollectionType::class)
            ->add('save', SubmitType::class)
        ;
    }

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

AttributesCollectionType:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->addModelTransformer(
        new AttributesCollectionTransformer()
    );
}

public function getParent()
{
    return CollectionType::class;
}

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

AttributesCollectionTransformer:

public function transform($attributes)
{
    $values = [];
    /** @var Attributes $attribute */
    foreach ($attributes as $attribute) {

        $type = $attribute->getType();

        switch ($type) {
            case 'TYPE_TEXT':
                $values[] = $attribute->getValue();
                break;
            case 'TYPE_SELECT':
                $values[] = ''; //TODO - jak wyswietlic ChoiceType
                break;
        }
    }

    return $values;
}

Chciałem wyświetlać listę Atrybutów za pomocą collectionType - tylko pytanie w jaki sposób mogę zrobić„ to tak aby w zależności od potrzeb moje pole miało inny typ?

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 101 wizyt
0 głosów
2 odpowiedzi 443 wizyt
pytanie zadane 8 lipca 2019 w PHP przez Mesne191 Początkujący (460 p.)
0 głosów
2 odpowiedzi 509 wizyt

93,605 zapytań

142,529 odpowiedzi

322,999 komentarzy

63,094 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...