我正在制作一个自定义“视频”字段,该字段应该接受多个文件(用于不同的视频格式)和一个标题。到目前为止,架构很好,但我无法让它上传和存储实际文件。
我的代码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
字段的值(它只是一个文本字段)在查询中很好,所以这只是一个问题与文件字段。