平時甚少會需要在客製表單中加入檔案/圖像上傳的檔案,所以一時之間也不知道該怎麼寫,為了避免下次又忘記,來補篇筆記
Drupal 8 開始是定義在 ManagedFile Class1 內:
$form['images'] = array(
'#type' => 'managed_file',
'#upload_location' => 'private://images/',
'#multiple' => TRUE,
'#upload_validators' => array(
'file_validate_extensions' => array('png gif jpg jpeg'),
'file_validate_size' => array(25600000),
'file_validate_image_resolution' => array('800x600', '400x300'),
),
);
其中,Drupal 預設就提供數種 upload_validators
2,如
- file_validate_extensions: 驗證檔案的副檔名(檔案類型)
- file_validate_image_resolution: 驗證圖像檔案的解析度
- file_validate_is_image: 驗證檔案是否為影像類型
- file_validate_name_length: 驗證檔名長度
- file_validate_size: 驗證檔案大小
至於如果要使用 default_value
來判斷之前是否有值,主要就是要先能取得之前上傳檔案的 fid,然後在 default_value
填入 fid 值,如下:
$form['picture'] = array(
'#title' => t('picture'),
'#description' => $this->t('Chossir Image gif png jpg jpeg'),
'#type' => 'managed_file',
'#required' => true,
'#default_value' => (isset($data['fid'])) ? [$data['fid']] : [],
'#upload_location' => 'public://images/',
'#upload_validators' => array(
'file_validate_extensions' => array('gif png jpg jpeg')),
);
Ref: https://codimth.com/blog/web/drupal/how-set-default-value-managed-file-field-drupal-8-9
Comments