Symfony2 - 没有为约束配置默认选项

Hoo*_*och 8 php forms symfony

我正在关注Symfony2的教程.我正在用表格做项目.

第12章:表格| 150

我的代码:

    public function newAction(Request $request)
    {
   $task = new Task();
   $task->setTask('Find EiM group');
   $task->setDueDate(new DateTime('tomorrow'));

   $form = $this->createFormBuilder($task)
      ->add('task', 'text')
      ->add('dueDate', 'date')
      ->add('save', 'submit')
      ->getForm();

   return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
       'form' => $form->createView()));
    }
Run Code Online (Sandbox Code Playgroud)

我从主题中得到错误.

No default option is configured for constraint Symfony\Component\Validator\Constraints\DateTime
Run Code Online (Sandbox Code Playgroud)

它可以是什么?怎么解决?我严格遵循书中的例子.

mab*_*uza 29

这个:

$task->setDueDate(new DateTime('tomorrow'));
Run Code Online (Sandbox Code Playgroud)

应该:

$task->setDueDate(new \DateTime('tomorrow'));
Run Code Online (Sandbox Code Playgroud)

注意Datetime之前的正斜杠.检查您的"use"语句,您可能已导入并使用类'Symfony\Component\Validator\Constraints\DateTime'


Pim*_*Web 1

http://symfony.com/doc/current/reference/forms/types/date.html

我不确定,但在本文档之后,基本用法是:

$builder->add('publishedAt', 'date', array(
    'input'  => 'datetime',
    'widget' => 'choice',
));
Run Code Online (Sandbox Code Playgroud)

或者

$builder->add('publishedAt', 'date', array(
    'input'  => 'timestamp',
    'widget' => 'choice',
));
Run Code Online (Sandbox Code Playgroud)

也许您应该尝试在之后插入选项数组

'日期'