CakePHP целочисленное поле по умолчанию пустое значение при неудачной проверке сохранения () после read () или create () - PullRequest
0 голосов
/ 02 сентября 2011

Схема:

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, я хочу убедиться, что он числовой.

1 Ответ

0 голосов
/ 03 сентября 2011

В вашем массиве проверки попробуйте установить для параметра empty значение true:

'vacation_request_denial_reason_id' => array('numeric' => array('rule' => array('numeric'), 'empty' => true

Это позволит значению быть пустым. Я не могу вспомнить, является ли false значением по умолчанию, но, похоже, это может иметь место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...