web-dev-qa-db-ja.com

管理ファイル:#default_valueを設定する適切な方法は何ですか?

$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?どこに設定され、どのように変更できますか?他のページにアップロードされた画像を使用しますか(同じモジュールにコード化されています)。

7
Jayjay D. Luffy

Drupal Answersへようこそ。fid整数値をデフォルト値に渡すだけで済みます。fidについて理解を深めるには、以下の説明を参照してください。

fidは、Drupalファイルシステムを使用して、アップロードされたファイルごとにデータベースに保存される一意のファイルIDです。

したがって、デフォルトの画像を設定する場合は、Drupal File System経由でアップロードする必要があります。理想的には、アップロードされたファイルのfidを variable_set を使用して変数に保存する必要があります。 =送信ハンドラで variable_get デフォルト値でfidを設定します。それだけです!!

それが答えることを願っています:-)

6
Anil Sagar

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']; 
} 
 
0
Kuriakose