Автономные вводы года с Cake PHP 2.x FormHelper - PullRequest
0 голосов
/ 15 апреля 2020

Я использую Cake PHP 2.10.20 для унаследованного проекта, для которого требуется поле для хранения года. Так что не нужны дни или месяцы, только годы. Я попытался использовать тип поля MySQL YEAR, а также INT (4).

Я использую FormHelper для создания ввода года следующим образом ...

echo $this->Form->input('User.test_year', [
  'type' => 'date',
  'dateFormat' => 'Y',
  'minYear' => date('Y'),
  'maxYear' => date('Y') + 1
]);

После сохранения данные запроса содержат массив для поля User.test_year, который выглядит следующим образом ...

array(
  'User' => array(
    'id' => '1',
    'test_year' => array(
      'year' => '2020'
    )
  )
)

Cake PHP всегда использует формат массива для дат. Когда я обычно отлаживаю полное поле даты (например, год + месяц + день) в обратном вызове beforeValidate (), оно уже преобразуется в правильный формат строки. Однако, когда я пытаюсь отладить это поле, предназначенное только для года, в beforeValidate (), оно по-прежнему форматируется как тот же массив.

Поэтому при сохранении я сталкиваюсь с уведомлением PHP и MySQL ошибка ...

Array to string conversion [CORE/Cake/Model/Datasource/DboSource.php, line 2220]

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Array' in 'field list'

SQL Query: UPDATE `my_database`.`users` SET `id` = 1, `test_year` = Array, `modified` = '2020-04-14 23:10:32' WHERE `my_database`.`users`.`id` = '1'

Очевидно, что год в массиве не преобразуется в правильную строку перед вставкой в ​​базу данных. Я также пытался использовать метод FormHelper :: year () вместо generi c FormHelper :: input (), но это ничего не меняет.

Действительно любопытно узнать, что я делать неправильно или упускать из виду, так что заранее поблагодарите любого поклонника Cake PHP, желающего указать мне правильный путь.

Будьте в безопасности и спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...