在symfony2中选择选项
我花了几个小时来寻找解决问题的方法,我希望在这里找到答案 以下是我的表格代码(ExperienceType): 下面是负责在数据库中注册实体的方法:在symfony2中选择选项,symfony,symfony-2.1,symfony-forms,Symfony,Symfony 2.1,Symfony Forms,我花了几个小时来寻找解决问题的方法,我希望在这里找到答案 以下是我的表格代码(ExperienceType): 下面是负责在数据库中注册实体的方法: public function testAction() { $exp = new Experience(); $form = $this->createForm(new ExperienceType(), $exp); $request = $this->get('request
public function testAction()
{
$exp = new Experience();
$form = $this->createForm(new ExperienceType(), $exp);
$request = $this->get('request');
if ($request->getMethod() == 'POST')
{
$form->bind($request);
if ($form->isValid())
{
$em = $this->getDoctrine()->getManager();
$exp = $form->getData();
$exp->setIdMembre($this->idMembreAction());
$em->persist($exp);
$em->flush();
return $this->redirect($this->generateUrl('test'));
}
}
return $this->render('MembreBundle:Default:FormExp.html.twig', array(
'form' => $form->createView()));
}
当我验证表单时,会出现以下错误:“HTTP错误500(内部服务器错误)”
然后使用文件dev.log我阅读了以下消息:
条令调试:插入到经验中(idcontart、idMembre、idVille、,
intitulePoste公司,开始日期,结束日期,任务)价值观{“1”
(,,,,,,??):“[对象](项目\\ClasseBundle\\Entity\\
合同:{}>,“2”:1,“3”:“[object](项目\\ClasseBundle\
\实体\\城市:{}>,“4”,“ggg”,“5”:“华夫格”,“6”,“6”
2222/22/22”、“7”、“2222/22/22”、“8”:“HJHJ”}[]
因此,我在ExperienceType文件中添加了idVille和idContart字段的条件(必选false)
我在Experience.php文件(entity)中添加了两个字段都接受空值(nullable=true)
当我验证我的表单时,我的实体将毫无问题地存储在数据库中。
那有什么问题?感谢您删除$exp=$form->getData()代码>看起来正确
对于其他具有类似问题的用户,请参阅有关此问题的详细信息。删除$exp=$form->getData()代码>看起来正确
对于其他有类似问题的用户,我们将提供更多信息。您可以删除行$exp=$form->getData()
因为它以数组而不是对象的形式返回数据。由于您将$exp
变量传递给createForm()
方法,因此实体将自动映射到表单 您可以删除行$exp=$form->getData()
因为它以数组而不是对象的形式返回数据。由于您将$exp
变量传递给createForm()
方法,因此实体将自动映射到表单 您可能以错误的方式映射了对象。
我在表单中看到名为idcontract
的字段,建议您尝试存储对象合同的id属性。这就是为什么您需要在该对象中使用\uu toString()
方法的原因
映射应该更像这样:
/**
* @ORM\ManyToOne("You\SomeBundle\Entity\Contract")
* @ORM\JoinColumn(name="contract_id", referencedColumnName="id")
* /
protected $contract;
比:
您可能以错误的方式映射了对象。
我在表单中看到名为idcontract
的字段,建议您尝试存储对象合同的id属性。这就是为什么您需要在该对象中使用\uu toString()
方法的原因
映射应该更像这样:
/**
* @ORM\ManyToOne("You\SomeBundle\Entity\Contract")
* @ORM\JoinColumn(name="contract_id", referencedColumnName="id")
* /
protected $contract;
比:
您不需要行$exp=$form->getData()代码>。$exp
已与表单映射,因此包含所有数据。尽量把那句话删掉。尝试调用dev
evnoirement中的请求以查看更详细的错误消息。非常感谢,问题是类无法转换为C:\wamp\www\Symfony\vendor\doctrine dbal\lib\doctrine\dbal\Statement.php中的字符串,解决方案是必须添加方法\uu toString。谢谢:欢迎光临。要我把这个作为答案吗?@byf ferdy是的,你可以你不需要这行$exp=$form->getData()代码>。$exp
已与表单映射,因此包含所有数据。尽量把那句话删掉。尝试调用dev
evnoirement中的请求以查看更详细的错误消息。非常感谢,问题是类无法转换为C:\wamp\www\Symfony\vendor\doctrine dbal\lib\doctrine\dbal\Statement.php中的字符串,解决方案是必须添加方法\uu toString。谢谢:欢迎光临。想让我补充一下吗?@byf ferdy是的,你可以。事实并非如此。表单总是返回绑定的内容-如果绑定了数组,它将返回数组;如果绑定了对象,则返回对象@2dar并没有在添加到string方法的地方编写代码,但可能在objectContract
上不是这样。表单总是返回绑定的内容-如果绑定了数组,它将返回数组;如果绑定了对象,则返回对象@2dar并没有在添加到string方法的地方编写代码,但可能是在objectContract
/**
* @ORM\Column(name="idContract", type="integer")
* /
protected $contract_id;