我正在製作一個自定義的「視頻」字段,應該接受幾個文件(對於不同的視頻格式)和標題。到目前爲止,模式沒有問題,但我無法上傳並存儲實際的文件。Drupal 7自定義字段與多個文件字段
我在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
字段(它只是一個文本字段)的值在查詢中很好,所以這只是文件字段的問題。
這真的讓我朝着正確的方向,謝謝!你知道我應該把這個代碼放在哪裏嗎?它是'hook_field_update_field()'? – cambraca 2012-01-04 15:38:59
@cambraca:我已經更新了答案,希望它有所幫助:) – Clive 2012-01-04 18:17:07
因此,如果您使用'hook_field_presave',那麼不需要使用'file_usage_add'來註冊文件? – Beebee 2013-09-17 08:58:48