Дата сохраняется как нулевая в 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')); ?>
    

    Но, вероятно, это не то, что вам нужно.

Другие вопросы по тегам