2012-03-30 75 views
1

我正在嘗試使用symfony2創建一個web服務。我想web服務進行結構化和傾聽:從symfony2中的帖子字段中刪除表單名稱

POST到/團隊/列表使用參數鍵1 =值,鍵2 =值

爲了驗證目的,我創建了一個TeamForm對象和TeamFormModel驗證數據(使用註釋)。我遇到的問題是表單正在尋找團隊[key1]和團隊[key2],而不是僅將key1和key2綁定到TeamFormModel。

有沒有辦法將表單配置爲不使用團隊[*]?

回答

6

如果您使用的是2.1分支,很容易,您可以簡單地創建一個空名稱的表單。

$form = $this->get('form.factory')->createNamed(
    '',    // the name 
    new TeamType(), // the type 
    $team   // the data 
); 
$form->bindRequest($request); 

因此它會按照您的預期工作。

但是,如果你使用的是2.0分支,據我所知,它不支持,你必須做手工綁定:

$form = $this->createForm(new TeamType(), $team); 
$from->bind($request->request->all()); 
2

您可以驗證實體,而無需創建形式。您可以從POST數據創建實體對象並將其傳遞給驗證器。見食譜的validation部分。

如果您不希望每次都從請求參數創建實體對象,則可以使用json或xml格式發佈數據,然後使用JMSSerializerBundle將序列化爲實體對象。

+0

嗨@ m2mdas,我真的想知道..你如何從POST數據創建一個實體對象?意思是,有沒有簡單的方法來做到這一點,而無需單獨提取所有參數並使用setter? – Mick 2014-09-17 14:07:18