2014-07-10 99 views
0

我想添加一個symfony2形式的實體字段,但它總是給我相同的錯誤:'500(內部服務器錯誤)'。Symfony2學說形式 - 實體類型

這是我用來創建表單的類。它被自動編程爲教條和CRUD。

class ClientType extends AbstractType 
{ 
     /** 
    * @param FormBuilderInterface $builder 
    * @param array $options 
    */ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('companyName', 'text' , array('attr' => array('class' => 'companyname'))) 
      ->add('contactUserName','text' , array('attr' => array('class' => 'contactusername'))) 
      ->add('phone','text' , array('attr' => array('class' => 'phone'))) 
      ->add('subdomain','text' , array('attr' => array('class' => 'subdomain'))) 
      ->add('email','text' , array('attr' => array('class' => 'email'))) 
      ->add('website','text' , array('attr' => array('class' => 'website'))) 

     ; 

    } 

這工作得很好,但後來,我嘗試這樣:

->add('client', 'entity', array(
      'class' => 'BackendBundle:Client')); 

'500(內部服務器錯誤)'

我嘗試了許多不同的方法來做到這一點,但它總是一樣的錯誤。 事情是,我可以添加或刪除當這個類由教條CRUD完成時在開始創建的字段,但如果我嘗試添加更多不同類型的字段,它不會讓我。

我應該做我自己的Type類嗎?所以我可以自定義我的表單或者是否有修改表單原則的方法?

TY

+0

切換到開發模式以獲取更多有用的錯誤消息。 – Cerad

+0

這看起來很明顯,但是您知道每個添加的字段必須作爲客戶端類中的屬性存在,並使用適當的set方法嗎? – Alex

+0

請提供實體模型定義 – Rufinus

回答

1

The thing is, i can add or remove the fields that were created at the beggining when this class was done by the doctrine CRUD but if i try adding more fields with different types, it won't let me.

這是因爲創建命令你ClientType.php這樣做了,根據您BackendBundle\Entity\Client.php文件的結構。表單映射到您打算創建的實體。如果你想在窗體上更多的領域,你將需要添加字段屬性在BackendBundle\Entity\Client.php,然後運行:

php bin/console doctrine:generate:entities <VENDOR>/<BUNDLE>/Entity/Client 

or if using Symfony 2 < version 2.5 

php app/console doctrine:generate:entities <VENDOR>/<BUNDLE>/Entity/Client 

要生成該字段的getter和setter,然後

php bin/console doctrine:schema:update --force 

or if using Symfony 2 < version 2.5 

php app/console doctrine:schema:update --force   

將新字段添加到數據庫表。

現在您可以嘗試添加該字段,確保add()方法中的第一個參數完全符合您在實體中命名屬性的方式。

+0

我明白,如果我想添加一個不在我的客戶端類中的字段,但是當我嘗試代碼「$ builder-> add('client','entity',數組('class'=>'BackendBundle:Client'));「,刪除所有以前的'添加'我沒有添加任何新的類,他們是相同的領域,但即時聯繫他們,而不是做它逐個。 據我所知,該類不存儲表單輸入的類型。 然後,我想顯示一個已經在類中的字段,但不是使用'文本'類型,而是想使用'實體'或'選擇'或其他。它也不會讓我。 –

+0

我不完全確定你可以這樣做,或者你爲什麼想要 – Alex

+0

我只是不能使用除「文本」之外的任何其他類型的表單字段。這是主要問題。我已經添加了其餘的信息來撰寫一個很好的問題,但這就是我想要解決的問題。 難道是因爲doctine CRUD?根據答案,我會繼續研究這個或那個方向。 –