我正在尝试按日期形式进行搜索以在Symfony 2.3上工作。我有一个带有几个字段 (5) 的实体,该实体的名称是 Schedule,其中两个字段是日期时间,用于开始日期时间和结束日期时间。我想按日期搜索,但这让我头疼。我有这个动作:
public function indexAction(Request $request)
{
//time form creation
$aSchedule = new Schedule();
$dateTimeForm = $this->createFormBuilder($aSchedule)
->add('startDateTime', 'datetime')
->add('endDateTime', 'datetime')
->add('search', 'submit')
->getForm();
//getting the formr using post
$dateTimeForm->handleRequest($request);
if ($dateTimeForm->isSubmitted()){
echo 'Submited';
}
if ($dateTimeForm->isValid()){
echo 'Is Valid';
}
}
我在模板中显示了表单,如下所示:
<form action="{{ path('osd_sch_homepage') }}" method="post"
{{ form_enctype(dateTimeForm) }} >
<div id="start-date-time">
{{ form_label(dateTimeForm.startDateTime) }}
{{ form_errors(dateTimeForm.startDateTime) }}
{{ form_widget(dateTimeForm.startDateTime) }}
</div>
<div id="end-date-time">
{{ form_label(dateTimeForm.endDateTime) }}
{{ form_errors(dateTimeForm.endDateTime) }}
{{ form_widget(dateTimeForm.endDateTime) }}
</div>
<div>
{{ form_widget(dateTimeForm.search) }}
</div>
</form>
现在,在每次发送表单的操作中,"$dateTimeForm->isSubmitted()"工作正常,但是"$dateTimeForm->isValid()"没有变为真,我的意思是永远不会去"echo'Is Valid';"。 我做错了什么?提前谢谢你。阿贝尔·古兹曼
它可能没有放置自动生成的 CSRF 令牌。试着把{{ form_rest }}
放在最后。
您是否尝试过调试表单错误?
foreach($form->getErrors() as $err){
echo $err->getMessage();
}