Cakephp не сохраняет выбранное значение поля даты
У меня есть эта проблема, я использую торт 2.8.x, мое приложение CakePHP не сохраняет выбранное значение поля даты. Он сохранял "1970-01-01", даже если вы выбрали "2016-02-02" . Что может быть не так?
Это мой код в контроллере
$this->request->data['Jobapp']['dayofbirth']= date('Y-m-d H:i:s', strtotime($this->request->data['Jobapp']['dayofbirth']));
$this->request->data['Jobapp']['dateofissue']= date('Y-m-d H:i:s', strtotime($this->request->data['Jobapp']['dateofissue']));
$this->request->data['Jobapp']['expirydate']= date('Y-m-d H:i:s', strtotime($this->request->data['Jobapp']['expirydate']));
и это одно из полей в файле представления
<td><?php echo $this->Form->input('dayofbirth',array('label'=>'Date of Birth','type'=>'date','minYear'=>date('Y') - 90))?>
В чем может быть проблема?
'dayofbirth' => array(
'day' => '12',
'month' => '08',
'year' => '1993'
),
'maritalstatus' => 'emtpy',
'nationality' => 'empty',
'complexion' => '',
'passportnumber' => '',
'dateofissue' => array(
'month' => '05',
'day' => '25',
'year' => '2016'
),
'placeofissue' => '',
'expirydate' => array(
'month' => '05',
'day' => '25',
'year' => '2016'
),
3 ответа
Ваши поля даты являются массивами. Пытаться:
$this->request->data['Jobapp']['dayofbirth']= date('Y-m-d H:i:s', strtotime(implode('-',$this->request->data['Jobapp']['dayofbirth'])));
то же самое с другими полями
Вы можете воспользоваться помощью jquery ui, с помощью которого вы можете избежать модификации поля даты с помощью контроллера.
По вашему мнению, сделайте следующие изменения,
<!-- Load the jquery & jquery ui library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
<script>
$(function(){
$(".datepicker").datepicker({dateFormat:"yyyy-mm-dd"});
});
</script>
<?php echo $this->Form->input('dayofbirth',['class'=>'datepicker']); ?>
<?php echo $this->Form->input('dateofissue',['class'=>'datepicker']); ?>
<?php echo $this->Form->input('expirydate',['class'=>'datepicker']); ?>
Удалите код контроллера, который обрабатывает входные данные. После этого вы сможете вставить дату в правильном формате.
Вам не нужно изменять поле даты, CakePHP позаботится об этом. Таким образом, вы можете избавиться от этих строк:
$this->request->data['Jobapp']['dayofbirth']= date('Y-m-d H:i:s', strtotime($this->request->data['Jobapp']['dayofbirth']));
$this->request->data['Jobapp']['dateofissue']= date('Y-m-d H:i:s', strtotime($this->request->data['Jobapp']['dateofissue']));
$this->request->data['Jobapp']['expirydate']= date('Y-m-d H:i:s', strtotime($this->request->data['Jobapp']['expirydate']));