Symfony(v 2.3.2)表單有一個奇怪的問題。這是非常簡單的形式,沒有關係。我還應該注意到,這種形式僅用於REST API。Symfony2表單提交無效的布爾值
所以我有一個發佈的領域(布爾)。在實體上它默認設置爲false。
更新時,REST API客戶端發送正確的PUT請求,即...&[entity]published=0&...
。這個值也在Symfony分析器中的表單參數中顯示。
但是我注意到數據庫中的實際值設置爲true(或1,因爲它是tinyint)。 Request: 0, form: 1
:
所以,要找出什麼問題,我$form->submit($request);
throw new \Exception(sprintf('Request: %s, form: %s', $request->get('entity')['published'], $form->get('published')->getData()));
或
throw new \Exception(sprintf('Request: %s, form: %s', $request->get('entity')['published'], $form->getData()->getPublished()));
異常消息稱後添加throw語句。這意味着,在某處提交方法的字符串值「0」轉換爲1
場構造與$builder->add('published', 'checkbox', [ 'required' => false ])
而且我發現奇怪的東西,這可能是相關的。在Symfony分析器,面板請求中,我收到錯誤:Warning: json_encode(): Invalid UTF-8 sequence in classes.php line 3758
,我沒有發送任何奇怪的字符 - 只是單詞「測試」。