user3188348
user3188348

Reputation: 433

Symfony not Render CollectionType

I create a form for a collection type of data in a separated from my controller

its my controller

/**
 * @Security("has_role('ROLE_USER')")
 * @Route("/phonebook/add", name="add")
 */
public function addPerson()
{
$person = new PhoneBookP();
$form = $this->createForm(PersoanlBookType::class, $person);

return $this->render(
    'default/add.html.twig',
    array('form' => $form->createView())
);
}

and its my form

->add('emails', CollectionType::class, array(
                'entry_type' => EmailType::class,
                'allow_add' => true,
                'prototype' => true,
                'allow_delete' => true,
                'attr'         => [
                    'class' => "emails-collection",
                ],
            ))

and my twig is

{% block body %}
{{ form(form) }}
{% endblock %}

it has no error and work in any common field (like NumberType,..) but not render CollectionType in my output. I using Symfony 4. whats my wrong?

Upvotes: 0

Views: 1402

Answers (2)

Renz Anima
Renz Anima

Reputation: 51

in your rendering form you need to do this:

$person = new PhoneBookP();
//addEmail() is the arraycollection in your PhoneBookP Entity
//to be able to load the form, you need to add one from your arraycollection
$person->addEmail(new Email());
$form = $this->createForm(PersoanlBookType::class, $person);

Upvotes: 1

Imanali Mamadiev
Imanali Mamadiev

Reputation: 2654

The tags form_start and form_end only render the <form>-tags. To render the rest of the form elements call the form-twig-helper inside the <form>-tags too:

{{ form_start(form) }}
   {{form(form)}}
    <button type="submit">Register!</button>
{{ form_end(form) }}

Upvotes: 0

Related Questions