【发布时间】:2023-03-12 20:14:01
【问题描述】:
我开始学习 Symfony2,我正在做一个输入日期的表格。当我尝试保存收到的日期时:
使用参数 [null, null] 执行“INSERT INTO date (date,critical) VALUES (?, ?)”时发生异常:
SQLSTATE[23000]:违反完整性约束:1048 列“日期”不能为空。
上课日期在这里:
上课日期{
/**
*
* @ORM\Id
*
* @ORM\Column(type="integer")
*
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id_date;
/**
*
* @ORM\Column(type = "date")
*/
protected $date;
/**
*
* @ORM\Column(name="critical", type="boolean")
*/
protected $critical;
/**
*
* @ORM\OneToMany(targetEntity = "Category", mappedBy ="date")
*/
protected $categories;
在表单类型中:
类 DateType 扩展 AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('date');
$builder->add('critical');
$builder->add('save', 'submit');
}
public function getName() {
return 'date';
}
public function getCritical() {
return 'critical';
}
public function getDefaultOptions(array $options) {
return array(
'data_class' => 'GuardBundle\Entity\Date',
);
}
在控制器中:
public function gesDateAction(Request $request) {
$date = new Date();
$form = $this->createForm(new DateType(), $date);
if ($request->getMethod() == 'POST') {
$em = $this->getDoctrine()->getManager();
$em->persist($date);
$em->flush();
return $this->render('GuardBundle:Dates:gesDates.html.twig', array(
'form' => $form->createView()));
}
return $this->render('GuardBundle:Fechas:gesDates.html.twig', array(
'form' => $form->createView()));
}
在视图中:
<form action="ges_date" method="post" {{ form_enctype(form) }}>
<br>
{{ form_row(form.date) }}
{{ form_row(form.critical) }}
{{ form_row(form.save) }}
<br>
</form>
请帮助我,非常感谢你
【问题讨论】:
-
也许您发送带有初始日期对象的发布请求。因此,当您持久化实体时,您的日期对象为空。阅读食谱symfony.com/doc/current/cookbook/form/direct_submit.html 并可能使用handleRequest,它应该可以工作:)