私はいくつかのファイル(異なるビデオフォーマット用)とキャプションを受け入れる予定のカスタム "ビデオ"フィールドを作っています。これまでのところ、スキーマは問題ありませんが、実際のファイルをアップロードして保存することはできません。複数のファイルフィールドを持つ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
@cambraca:私はそれが役に立ったという希望を更新しました:) – Clive
'hook_field_presave'を使うと、' file_usage_add'を使ってファイルを登録する必要はありませんか? – Beebee