2010-05-15 127 views
1

即時測試symfony表單驗證。symfony驗證問題

問題很簡單。

無論我放在身體文本區域併發布它,我總是收到「必需」。

我不知道爲什麼。

我只有一個驗證規則。

這裏是代碼: code

什麼是錯的/我怎樣才能調試?

謝謝

更新:它與控制器中的綁定有關。

因爲即使我刪除驗證表單仍然無效,它將被傳遞到模板,但這次沒有「必需」。

所以無論是否得到驗證,它都不會有效。

它與embedForm()可能有什麼關係?已驗證嵌入表單的人員?

我已經印刷的錯誤信息進行與

<? 
foreach ($form->getErrorSchema() as $field => $error) { 
    printf("%s: %s\n", $field, $error->getMessage()); 
    echo "<br />"; 
} 
?> 

,我也得到:

0: Unexpected extra form field named "body". 
thread: body [Required.] 
_csrf_token: Required. 
Body 

做他們的意思是線程:身體是必需的或需要CSRF?

謝謝

+0

我懶得檢查一下自己,所以...'textarea'的'name'屬性是什麼?它是'thread [body]'還是'body'? – Crozin 2010-05-15 12:46:15

+0

其線程[body]! – 2010-05-15 12:51:50

+0

- 刪除評論 - 只是看到你的更新 – Tom 2010-05-15 15:06:15

回答

1

首先,嘗試呼應的形式而不具體,如:

<?php echo $form; ?> 

如果一切正常,那麼它的與您的表單回顯代碼有關。我建議檢查該頁面的HTML源代碼,然後查看默認表單代碼呈現的內容,並將其與上面的代碼輸出進行比較。如果這些字段的名稱不同,那麼這就是您的答案 - 它可能是Radu建議的表單名稱格式。

在一個單獨的說明,別忘了使用方法:

<?php echo $form->renderHiddenFields(); ?> 

,以及在你的模板,從而使CSRF令牌字段被渲染。這將刪除您的「_csrf_token:必需」表單錯誤。

1

您是否檢查過通過POST發送的參數?

也許將在您的形式設置方法如下將幫助:

$this->widgetSchema->setNameFormat('thread[%s]');