How to insert a form in symfony2 for a ManyToOne relationship?

I am new to Symfony 2 Framework. I want to create an attachment for a relationship relationship of ManyToOne . I need the entity Address and AddressType

Address Object

namespace Webmuch\ProductBundle\Entity; use Doctrine\ORM\Mapping as ORM; class Address { private $id; private $line1; private $city; private $zip; private $phone; /** * @var string $type * * @ORM\ManyToOne(targetEntity="AddressType") * @ORM\JoinColumn(name="address_type_id", referencedColumnName="id") */ private $type; } 

AddressType Addresses

 namespace Webmuch\ProductBundle\Entity; use Doctrine\ORM\Mapping as ORM; class AddressType { private $id; private $title; } 

Address controller

 namespace Webmuch\ProductBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Webmuch\ProductBundle\Entity\Address; use Webmuch\ProductBundle\Form\AddressType; /** * Address controller. * * @Route("/address") */ class AddressController extends Controller { /** * Displays a form to create a new Address entity. * * @Route("/new", name="address_new") * @Template() */ public function newAction() { $entity = new Address(); $form = $this->createForm(new AddressType(), $entity); return array( 'entity' => $entity, 'form' => $form->createView() ); } } 

Form section

 namespace Webmuch\ProductBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilder; class AddressType extends AbstractType { public function buildForm(FormBuilder $builder, array $options) { $builder ->add('line1') ->add('line2') ->add('state') ->add('city') ->add('zip') ->add('phone') ->add('type') ; } } 

I spent the whole day with this, and I tried many things, but I could not get it to work.

+4
source share
1 answer

It is described in the documentation .

You create another form type for AddressType (called AddressTypeType? Ugly, but you chose a name) and replace ->add('type') with ->add('type', new AddressTypeType()); .

+6
source

All Articles