Я создаю собственное поле "видео", которое должно принимать несколько файлов (для разных видеоформатов) и подпись.Пока что схема в порядке, но я не могу загрузить и сохранить фактические файлы.
Мой код в hook_field_widget_form
выглядит так (только вставляя соответствующие биты):
$element['mp4'] = array(
'#type' => 'file',
'#title' => 'MP4 file',
'#delta' => $delta,
);
$element['ogg'] = ... /* similar to the mp4 one */
$element['caption'] = array(
'#type' => 'textfield',
'#title' => 'Caption',
'#delta' => $delta,
);
Кроме того, в моем .install
файле:
function customvideofield_field_schema($field) {
return array(
'columns' => array(
'mp4' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
'ogg' => ... /* similar to mp4 */
'caption' => array(
'type' => 'varchar',
'length' => 255,
),
)
);
}
И ошибка, которую я получаю, это когда я пытаюсь сохранить данные.Я получаю форму в порядке, и база данных выглядит хорошо (по крайней мере, поля, создаваемые Drupal), но когда он пытается сделать INSERT, он терпит неудачу, потому что значение, которое он пытается получить в эти целочисленные поля, является пустой строкой.
Из того, что я понимаю, они должны быть целыми числами, верно?(fid
s?) Но я предполагаю, что файлы не загружаются, хотя я получаю правильный интерфейс для загрузки файлов.
Drupal показывает вам запрос INSERT, который пытается выполнить,слишком долго, чтобы публиковать здесь, но я могу видеть, что значение для поля caption
(которое является просто текстовым полем) подходит для запроса, поэтому проблема заключается только в полях файла.