$form['picture']['file'] = array(
'#type' => 'managed_file',
'#title' => t('picture'),
'#description' => t('Allowed extensions: gif png jpg jpeg'),
'#default_value' => (isset($foo->picture->fid) ? $foo->picture->fid : ''),
'#upload_location' => variable_get('picture_upload_location'),
'#upload_validators' => array(
'file_validate_extensions' => array('gif png jpg jpeg'),
// Pass the maximum file size in bytes
'file_validate_size' => array(MAX_FILE_SIZE*1024*1024),
),
);
here からの上記のコードスニペットがあります。とても便利ですが、設定が難しいです#default_value
。
とは $foo
?どこに設定され、どのように変更できますか?他のページにアップロードされた画像を使用しますか(同じモジュールにコード化されています)。
Drupal Answersへようこそ。fid整数値をデフォルト値に渡すだけで済みます。fidについて理解を深めるには、以下の説明を参照してください。
fidは、Drupalファイルシステムを使用して、アップロードされたファイルごとにデータベースに保存される一意のファイルIDです。
したがって、デフォルトの画像を設定する場合は、Drupal File System経由でアップロードする必要があります。理想的には、アップロードされたファイルのfidを variable_set を使用して変数に保存する必要があります。 =送信ハンドラで variable_get デフォルト値でfidを設定します。それだけです!!
それが答えることを願っています:-)
Submit関数を呼び出さずにファイルを再度レンダリングする場合、ユーザーは$ _GETプロパティを使用できます。ファイルが送信関数の後に呼び出されている場合は、$ form_state ['values'] ['file']を使用します
$ form ['file'] = array( '#type' => 'managed_file'、 '#upload_location' => 'private:/ /', '#weight' => 5、 '#upload_validators' => array( 'file_validate_extensions' => array( 'gif png jpg jpeg doc docx pdf xls xlsx rtf odt tiff ')、 )、 ); if(isset($ _ GET [' file '])){ $ form ['file'] ['#default_value'] = $ _GET ['file']; }