История: форма получает данные для двух моделей (Project и связанный ProjectDetail), контроллер пытается сохранить данные формы с помощью saveAll.Проверка не удалась для некоторых полей связанной Модели, даже если это не так (например, 1234 не выполняет правило «числовой»).После некоторого перебора я поставил debug ($ this-> data);вызовы в вызовах beforeValidate () каждой модели, обратите внимание на то, как поля «стоимость» и «доход» в каждом случае каким-то образом теряют свою начальную цифру (в то время как поле даты не делает. Это поле также проверяется правильно).
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
Итак, каким-то образом эта строка потеряла свою численность вместе со своей ведущей цифрой.Странный.Любые мысли приветствуются.
Редактировать: Да, модель сохраняет очень хорошо самостоятельно.
VS Php 5.3.6 Cake 1.3.10 и 1.3.11