2014-06-08 23 views
0

我有一個擴展AbstractType的表單類。我的代碼如下...Symfony2表單類ContextErrorException

  1. 取FormBuilder並創建一個

    $formFactory = $this->container->get('form.factory'); 
    $builder = $formFactory->createBuilder('form', new MyEntity(), array()); 
    
  2. 呼叫的FormBuilder

    $form = $builder->create(new MyType()); 
    

create()方法我在做什麼錯?該錯誤是如下...

 ContextErrorException: Warning: array_key_exists(): The first argument should be either a string or an integer in C:\xampp\htdocs\icooicoo\vendor\symfony\symfony\src\Symfony\Component\Validator\Mapping\ClassMetadata.php line 289 

此外,文檔中說,我應該通過$task變量的create()方法是任務實體對象但是該方法必須接受FormTypeInterface變量。

+0

什麼是$ $ task變量?你的代碼只提示MyEntity和MyType?哪一個應該替代$任務? –

回答

0

首先,您不需要創建表單構建器,如果您已有FormType。你可以簡單地調用它,如下所示:

$formFactory = $this->container->get('form.factory'); 
$form = $formFactory->create(new MyType(), new MyEntity()); 

與您的錯誤。第二個問題可以通過這個上面來解決。如果不是,那麼它必須與一些驗證標記相關。請粘貼與驗證相關的EntityAnnotation(如果您使用此方法),或粘貼您用於驗證的YML文件。或者您認爲與驗證有關的任何其他內容。

代碼中的錯誤的說明

  • CreateBuilder的第一個參數是$數據(實體,$任務等)
  • 調用$builder->create時,則第一個參數是表單的類型,第二個是底層$ data