Схема:
vacation_request_denial_reason_id int(11) DEFAULT NULL,
Модель:
class VacationRequest extends AppModel {
var $name = 'VacationRequest';
var $actsAs = array('Containable');
var $validate = array('employee_id' => array('numeric' => array('rule' => array('numeric'))),
'approving_supervisor_id' => array('numeric' => array('rule' => array('numeric'))),
'vacation_request_status_id' => array('numeric' => array('rule' => array('numeric'))),
'vacation_hours' => array('numeric' => array('rule' => array('numeric'))),
'vacation_request_denial_reason_id' => array('numeric' => array('rule' => array('numeric'))));
Контроллер:
function add() {
if (!empty($this->data)) {
$this->VacationRequest->create();
if ($this->VacationRequest->save($this->data)) {
// ...
}
}
}
Этот код не проходит проверку для vacation_request_denial_reason_id
...
Я сузил проблему до того момента, когда я пытаюсь вызвать Model->save()
после вызова Model->read()
или Model->create()
.Доказано тем, что код будет работать, если я закомментирую вызов create()
.
Я смею назвать это ошибкой.Тем не менее, я чувствую, что я испытал это раньше для целочисленных столбцов и забыл обойти.Любое руководство приветствуется.
ОБНОВЛЕНИЕ
Я должен отметить, что vacation_request_denial_reason_id
не является частью $this->data
в представлении формы.Так что это определенно странно, что это не проходит проверку.Кроме того, я не намерен использовать 'allowEmpty' => true
в правиле валидации.Когда он присутствует в $this->data
, я хочу убедиться, что он числовой.