I have a custom form in Drupal 8. Form has managed_file field with multiple true. I am facing challenge regarding the limit of number of files upload to this field.
I have to make this managed_file field to upload only 3 images.
Can someone help me regarding this? I have tried below code.
public function buildForm(array $form, FormStateInterface $form_state) {
$form['upload_doc'] = array(
'#type' => 'managed_file',
'#title' => 'File Upload',
'#upload_location' => 'public://upload_document/',
'#required' => TRUE,
'#multiple' => TRUE,
'#upload_validators' => array(
'file_validate_extensions' => array('jpg jpeg png'),
'file_validate_size' => 2000,
),
);
// Add a submit button that handles the submission of the form.
$form['actions']['submit'] = [
'#type' => 'submit',
'#value' => $this->t('Submit'),
];
return $form;
}
public function validateForm(array &$form, FormStateInterface $form_state) {
$fileObj = $form_state->getValue('upload_doc');
if (count($fileObj) > 3) {
drupal_set_message('File limit exceed'.count($fileObj), 'error');
return false;
} else {
return true;
}
}
The problem is, i am not able to validate file upload limit. It's allow to upload more than limit. Please help me Thank you
There is currently an opened issue to get this feature out of the box.
In the meanwhile, you can implement "element_validate" in your form:
Then in your_module.module: