1

他の必須フィールドもあるフォームに画像をアップロードしようとしているときに問題が発生しました。そのため、必須フィールドに何も入力せずに画像をアップロードすると、アップロードされた画像が失われます (フォームの検証中に画像がなくなります)。form_state などのどこにも印刷できません。必要な他のフォーム要素を含むフォーム内でファイルをアップロードするにはどうすればよいですか? ユーザーが他の必須フィールドに情報を入力するのを忘れた場合に、ユーザーに写真を再度アップロードしてほしくありません。

何か案は?

    function form() {
    $form['#attributes'] = array('enctype' => "multipart/form-data");
    //'upload' will be used in file_check_upload()
    $form['upload'] = array('#type' => 'file');
    $form['my_require_field'] = array(
        '#type' => 'textfield',
        '#title' => t('Enter code here'),
        '#default_value' => 1,
        '#size' => 20,
        '#required' => TRUE
      );
    }
    function form_validate() {
     if(!file_check_upload('upload')) {
     form_set_error('upload', 'File missing for upload.');
    }
    }
    function form_submit() {
     $file = file_check_upload('upload');
    }
4

2 に答える 2

0

Drupal 7 を使用している managed_file タイプ ID を使用する必要があります

 $form['upload'] = array(
      '#type' => 'managed_file',
      '#title' => t('Upload Image'),
      '#default_value' => '',
      '#required' => TRUE,
      '#description' => t("Upload Image description"),
    );

サブミット ハンドラーでは、次のように記述できます。

// Load the file via file fid.
$file = file_load($form_state['values']['upload']);

// Change status to permanent and save.
$file->status = FILE_STATUS_PERMANENT;
file_save($file);

これが役立つことを願っています!

于 2014-07-01T05:08:15.667 に答える