php – 如何在symfony2中为实体ManyToOne关系嵌入表单?
作者:互联网
我是Symfony 2 Framework的新手.我想形成实体ManyToOne关系的嵌入.我必须实体地址和地址类型
地址实体
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实体
namespace Webmuch\ProductBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
class AddressType
{
private $id;
private $title;
}
地址控制器
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()
);
}
}
表格部分
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')
;
}
}
我花了整整一天坚持这一点,我已经尝试了很多东西,但我无法管理让它工作.
解决方法:
它涵盖在documentation中.
您为AddressType创建了另一种表单类型(称为AddressTypeType?丑陋,但您选择了名称)并将 – > add(‘type’)替换为 – > add(‘type’,new AddressTypeType());.
标签:php,doctrine,symfony,symfony-forms,many-to-one 来源: https://codeday.me/bug/20190530/1182579.html