Дата сохраняется как нулевая в CakePHP 2.x с помощью FormHelper
Мне нужно передать данные из моей формы. У меня есть выпадающий список с годами на выбор в представлении:
echo $this->Form->input('Zona.agno', array(
'label' => 'Año',
'type' => 'year',
'minYear' => date('Y') ,
'maxYear' => date('Y') + 4,
'orderYear' => 'asc',
'dateFormat' => 'Y',
'empty' => '--Seleccione Año--'
));
Выше показано их отображение, но когда я нажимаю "Отправить", отладка сообщает, что данные пусты.
В базе данных тип данных date
,
Контроллер это:
if ($this->request->is('post')) {
$this->request->data('Zona.activo', 1);
if ($this->Zona->save($this->request->data)) {
$this->mensaje(__('La Zona ha sido creada.'));
$this->redirect(array('action' => 'index'));
} else {
$this->mensaje(__('La Zona no ha sido creada, por favor verifica los datos.'), 'error');
}
}
Это ошибка:
$this->validationErrors(array)
Zona(array)
agno(array)
0 Debe ingresar año que aplica
1 ответ
Решение
Ваша проблема в том, что вы пытаетесь сохранить неполную дату в date
поле в базе данных, и поскольку оно недопустимо, ORM устанавливает для этого поля значение NULL.
У вас есть два варианта здесь:
Измените тип поля в базе данных на
smallint
что, вероятно, и должно было быть с самого начала, учитываяagno
(Аньо) переводится какyear
,Добавьте два других поля, чтобы три дали правильную дату:
<? echo $this->Form->input('Contact.birthdate', array('type' => 'month')); ?> <? echo $this->Form->input('Contact.birthdate', array('type' => 'day')); ?>
Но, вероятно, это не то, что вам нужно.