2011-12-29 4 views
3

У меня есть проблема с сохранением поля даты в базе данных с помощью CakePHP.CakePHP - поле даты с ошибкой

Имя столбца

[User].[dob] 

Посмотреть

<?php echo $this->Form->input('dob', array('type'=> 'date', 'label' => FALSE, 'dateFormat' => 'DMY', 'minYear' => date('Y') - 111, 'maxYear' => date('Y'))); ?> 

Я получаю следующее сообщение об ошибке, когда я отправить форму -

2011-12-29 00:33: 57 Отладка: Уведомление (8): Преобразование массива в строку в [C: \ xampp \ htdocs \ dearmemoir \ cake \ libs \ router.php, строка 1573]

Это поле является частью модели пользователей Auth. Любые идеи, что может пойти не так?

+0

Ты собираешься объединить массив, как будто это была строка. Попробуйте заменить это на 'var_dump (...);', чтобы увидеть, что вы действительно возвращаетесь туда. –

+0

Кроме того, 'date ('Y') - 111' является строкой - int, возможно, попробуйте' intval (date ('Y')) - 111'? Нет, мое плохое, это работает! –

+0

А я думаю, что произошло то, что в массиве args был передан массив, и торт пытается связать его как строку. –

ответ

2

Эта строка кода сделал магию для меня -

$this->data['User']['dob'] = date('Y-m-d', strtotime($this->data['User']['dob'])); 

Я могу сохранить данные сейчас

+0

Где вы добавили этот код. Я имею в виду, какой файл и где. –

0

Я подозреваю, что вы ищете не то место. Сообщение об ошибке поступает из маршрутизации CakePHP (router.php) - то есть, возможно, URL-адрес перенаправления, который вы используете.

Пример кода вы даете выглядит правильно, это почти точно соответствует пример из Cake cookbook:

echo $this->Form->input('birth_dt', array('label' => 'Date of birth', 'dateFormat' => 'DMY', 'minYear' => date('Y') - 70, 'maxYear' => date('Y') - 18)); 

Вы можете добавить в чек на любой validation errors.

Смежные вопросы