2017-10-16 114 views
2

是否可以爲所有Symfony表單類型設置默認值?爲所有Symfony表單類型設置默認值

我們目前正在基於Symfony(3.3)開發API後端。在前端,我們有我們的實體作爲對象看起來像:{"id": 1, "username": "foo" ..... }

如果我們想更新實體,我們JSON.stringfy對象,並將其發送到服務器。

但是,如果我們通過$form->submit($request) 綁定請求到我們的實體,我們得到一個錯誤(「這種形式不應包含額外的字段。」),因爲我們沒有(和不想使用!) 「id」輸出FormTypes。

所以我們必須設置allow_extra_fieldstrue在每一個FormType

public function setDefaultOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(['allow_extra_fields' => true]); 
} 

是否有此配置爲所有FormTypes默認的方式(不擴展的自定義FormType或類似這樣的東西)?

+0

你是如何在實體中定義id屬性的? (在其註釋中)。 –

回答

3

您可以創建表單類型擴展名,將所有表單類型的默認值更改爲true

表單類型擴展功能非常強大:它們允許您在整個系統中修改任何現有的表單字段類型。

class MyFormTypeExtension extends AbstractTypeExtension 
{  
    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'allow_extra_fields' => true, 
     )); 
    } 

    public function getExtendedType() 
    { 
     return 'Symfony\Component\Form\Extension\Core\Type\FormType'; 
    } 
} 

查看更多有關如何在Official documentation註冊類型擴展名。

注:allow_extra_fields選項在FormTypeValidatorExtension定義,所以請確保您的自定義類型的擴展名被註冊後,它覆蓋缺省值,否則使用priority標籤屬性,以確保它。

+0

thx,那正是我一直在尋找的! – Fabian

相關問題