web-dev-qa-db-ja.com

アップロードが成功したときに呼び出されるmanaged_fileフォーム要素のコールバックはありますか?

ファイルが正常にアップロードされたときに呼び出されるmanaged_fileフォーム要素のJavascript/PHPコールバックはありますか? (つまり、フォームが送信されたときではなく、[アップロード]ボタンがクリックされたときです。)

$form['video'] = array(
    '#title' => t('Video'),
    '#type' => 'managed_file',
    '#default_value' => variable_get('image_example_image_fid', ''),
    '#upload_location' => 'public://temp_managed/',
);  

私が試してみました:

  • #file_value_callbacks、ただしこれは前処理のようです
  • #processですが、ページの読み込み中にも発生しているようです
3
Chris

PHP側の場合、#upload_validatorsを Form APIのドキュメントで説明)として使用 。アップロードした後、希望どおりに起動されます。Drupalユーザーの入力と実際のフォームの保存との間に発生するはずのすべてがバリデーターで発生します。かなり奇妙ですが、それはそうです。

JavaScriptパーツの場合、要素の説明は次のようになります。

#managed_file要素は、2つの「#submit」ボタンを含む一連のFAPI要素に展開され、1つは削除用のアップロード、「#file」要素、およびいくつかの「#hidden」および「#markup」要素が進行状況の表示を処理しますアップロード済みのファイルの表示。

したがって、「#ajax」プロパティはありませんが、独自のカスタムコードを使用して内部にアクセスできます。特に、ファイルのアップロードが成功すると、削除ボタンが表示されます。ただし、内部は予告なくリファクタリングされる可能性があるため、注意が必要です。

2
Mołot

PHP: hook_field_widget_form_alter()ImageInfo Cache がPHP側にアップロードされた直後にファイルを取得するために使用します。私は this#process callback を追加します callback#submit button に追加します。画像がアップロードされた直後に、バックグラウンドプロセスで画像スタイルを生成します。

もっと野蛮な方法が欲しいならfile_get_contents("php://input")$_POSTは、必要なすべてのものへのアクセスを提供します。これはお勧めできません&悪い考えです。 PHPラッパー に関する詳細情報。

1
mikeytown2