2011-04-17 51 views
2

我創建了我的教訓記錄這樣:從POST保存記錄學說1.2:整數模型現場驗證錯誤

$user = new User(); 
$user->fromArray($_POST); 
$user->save(); 

這將引發異常:

Uncaught exception 'Doctrine_Validator_Exception' with message 'Validation failed in class User 1 field had validation error: * 1 validator failed on dni (type) 

當然, 「dni」字段的類型爲:integer,HTTP POST包含所有值作爲字符串。這就是驗證失敗的原因。通過驗證的唯一方法是這樣做的:

$_POST['dni'] = (int) $_POST['dni']; 

但它「感覺」錯了。作爲說明,我正在將Doctrine集成到CodeIgniter中。這與Symfony一起工作時從未發生過。

非常感謝。

+0

現在我將「dni」字段更改爲字符串類型。 :S – 2011-04-18 06:40:18

回答

2

這是舊的,但懸而未決所以在這裏,它是:

$manager->setAttribute(Doctrine_Core::ATTR_VALIDATE, VALIDATE_ALL & ~VALIDATE_TYPES);

您可以指示學說驗證的全部或任何組合:類型(你的問題),長度,限制,全部和無。

你可以在global level上做到這一點。

也許還在連接層面。

而且每張桌子都有,但我找不到doctrine orm documentation

而且你不需要擔心數據庫中插入了錯誤的數據類型,數據庫不會讓你和那不在教義的手中。

+0

是的,這是一個古老的問題,但答案非常有用!非常感謝你! – 2011-11-15 19:42:22