故事搅乱数据:一个形式获取输入两种模式(项目及相关ProjectDetail),控制器试图保存表单数据与白水。验证失败的相关型号的某些领域,尽管它不应该(例如1234失败规则“数字”)。经过一些搞砸后,我把调试($ this-> data);每个模型的beforeValidate()接来电,请注意如何在“成本”和“收入”字段每个不知何故失去了领先的数字(当日期字段没有。这个字段也验证正确)。CakePHP的白水在相关模型
Project -> beforeValidate()
$this->data = Array
(
[Project] => Array
(
[project_type_id] => 1
[name] => asdf
[cost_center] => 1234
)
[ProjectDetail] => Array
(
[cost] => 1234
[revenue] => 1234
[project_start] => 2011-07-27
)
)
ProjectDetail -> beforeValidate()
$this->data = Array
(
[ProjectDetail] => Array
(
[cost] => 234
[revenue] => 234
[project_start] => 2011-07-27
)
)
虽然这本身就是讨厌,它似乎并没有解释为什么验证失败,因为这两个领域看起来仍然是数字。于是我就在beforeValidate方法过于以下几点:
$cost = $this->data['ProjectDetail']['cost'];
debug('#'.$cost.'#'); //Check for obscure non-printables
debug(is_string($cost));
debug(ctype_digit($cost));
和输出:
Project -> beforeValidate()
#1234#
true
true
ProjectDetail -> beforeValidate()
#234#
true
false
所以,在某种程度上,这串凭借其领先的数字一起失去了它的数字的烦躁。奇怪。任何想法赞赏。
编辑:是的,型号节省自己的就好了。
V.S. Php 5.3.6 Cake 1.3.10 & 1.3.11
什么是您的beforeValidate代码? –
只有几个debug();上面提到的电话 – jmu
我认为这是一个错误,我刚刚发布相同的!奇怪的是,我的字符串在它前面附有'1'。例如'测试'get保存为'1test' –