2013-10-07 35 views
6

我正在關注Symfony2的教程。 我正在做項目的形式。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())); 
    } 

而且我從主題得到錯誤。

No default option is configured for constraint Symfony\Component\Validator\Constraints\DateTime 

它可能是什麼? 如何解決它? 嚴格按照書中的例子。

回答

1

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

我不知道,但這個文檔後,基本用法是:

$builder->add('publishedAt', 'date', array(
    'input' => 'datetime', 
    'widget' => 'choice', 
)); 

$builder->add('publishedAt', 'date', array(
    'input' => 'timestamp', 
    'widget' => 'choice', 
)); 

也許應該嘗試後插入選項數組

'dat E」

+0

Jahnux73:我錯過了什麼嗎?您的第一個和第二個例子完全相同 –

+0

閱讀文檔時,我已經看到你必須在構建器中的'日期'之後插入選項數組....我更新第二個例子,它來自文檔...(array('input => ...... ....) – pbenard

24

此:

$task->setDueDate(new DateTime('tomorrow')); 

應該是:

$task->setDueDate(new \DateTime('tomorrow')); 

公告日期時間前的斜槓。檢查您的「使用」語句,您可能導入並正在使用「Symfony \ Component \ Validator \ Constraints \ DateTime」類

+1

我添加了良好的捕獲的加因 –