2017-10-20 59 views
1

我需要從表單傳遞數據。我有多年的下拉從視圖中進行選擇:他們使用FormHelper將CakePHP 2.x中的日期保存爲空

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 

回答

0

你的問題是,你正在嘗試一個不完整的日期保存到date領域在數據庫中,並且因爲它是無效的,ORM將該字段設置爲NULL。

你這裏有兩種選擇:

  • 更改爲smallint字段類型在數據庫中,這可能是它應該是從一開始就考慮agno(AÑO)轉換爲year

  • 添加其他兩個領域,所以這三個出示有效日期:

    <? echo $this->Form->input('Contact.birthdate', array('type' => 'month')); ?>   
    <? echo $this->Form->input('Contact.birthdate', array('type' => 'day')); ?> 
    

    ,不過也許這並不是你所追求的。

+0

改變數據庫中的字段,但是你還是不救它 – frtgu34

+0

工作的第二個選項,如果我拿到的話蛾的數據,但保養得很好,非常感謝你 – frtgu34