2015-02-09 74 views
0

我正在關注這個tutorial,我所要做的就是製作一個簡單的表單。我有自定義的自舉Symfony2的組件(我基本上是用幾乎所有的東西,而不FrameworkBundle),所以我有這樣的代碼:Symfony2 Forms Without a Class

$defaultData = array('message' => 'Type your message here'); 
     $form = Forms::createFormFactory()->createBuilder($defaultData) 
     ->add('name', 'text') 
     ->add('email', 'email') 
     ->add('message', 'textarea') 
     ->add('send', 'submit') 
     ->getForm(); 

你可以看到,唯一的區別是怎麼了獲得formfactory實例。 下面是我得到不過作爲一個錯誤:

Uncaught exception 'Symfony\Component\Form\Exception\UnexpectedTypeException' with message 'Expected argument of type "string, Symfony\Component\Form\ResolvedFormTypeInterface or Symfony\Component\Form\FormTypeInterface", "array" given' in

什麼我做錯了任何想法?謝謝!

+0

如果你按照教程,你爲什麼要使用'形式:: createFormFactory() - > createBuilder($ defaultData)'和'不是這 - $> createFormBuilder($ defaultData)'? – sjagr 2015-02-09 21:13:07

+0

我正在閱讀教程以獲得這個想法,正如我所說我是自定義的增強組件。但是,如果你閱讀控制器的方法,這個$ this-> container-> get('form.factory') - > createBuilder('form',$ data,$ options); ,它基本上調用Form Factory服務,我相信這將等於Forms :: createFormFactory(),然後它調用createBuilder(檢查我的代碼),以便我看不出它們之間的差異。 – gentec 2015-02-09 21:17:23

+0

從這裏開始建議:http://symfony.com/doc/current/components/form/introduction.html#creating-a-simple-form其中討論了獨立組件。讓示例工作,然後可能添加一些東西。 – Cerad 2015-02-09 23:32:32

回答

0

您沒有按照上述說明遵循教程。 Forms::createBuilder() method想知道您在第一個參數中創建的表單類型,而不是默認選項。默認選項是用於此上下文中的第二個參數。您可以在Controller API文檔中看到examine the createFormBuilder method的差異。

$defaultData = array('message' => 'Type your message here'); 
     $form = $this->createFormBuilder($defaultData) 
     ->add('name', 'text') 
     ->add('email', 'email') 
     ->add('message', 'textarea') 
     ->add('send', 'submit') 
     ->getForm(); 
如果你堅持做自己的方式

或者這樣的事情應該工作:

您應該在本教程中,因爲它代表您傳遞正確的參數到createBuilder()方法在內部使用createFormBuilder() helper方法:

// ... 
$form = Forms::createFormFactory()->createBuilder('form', $defaultData) 
// ... 
+0

傳遞給Symfony \ Component \ Form \ Extension \ Core \ Type \ FormType :: setDefaultOptions()的參數1必須是Symfony \ Component \ OptionsResolver \ OptionsResolverInterface的實例,Symfony \ Component \ OptionsResolver \ OptionsResolver的實例給出,顯然我有試過了,而且沒有工作 – gentec 2015-02-09 21:29:22

相關問題