我有一个定制的Drupal 8表单,它使用一个带有#ajax回调的managed_file字段,但是ajax回调从未被调用过(下面的例子)。我认为这是因为托管文件字段类型已经在使用ajax。有没有一种方法可以在我的自定义模块中实现自己的ajax回调,以便在托管文件自己的ajax完成后触发?
$form['file'] = array(
'#title' => t('Image File'),
'#type' => 'managed_file',
'#required' => TRUE,
'#upload_location' => 'private://',
'#multiple' => FALSE,
'#upload_validators' => [
'file_validate_is_image' => array(),
'file_validate_extensions' => array('jpg png psd ai bmp eps jpeg pdf tif tiff'),
'file_validate_size' => array(56600000)
],
'#ajax' => [
'callback' => array($this, 'myAjaxCallback'),
'event' => 'change',
'wrapper' => 'im-area',
'progress' => array(
'type' => 'throbber',
'message' => t('Choose City'),
),
],
);发布于 2020-11-16 20:35:46
我认为您不能将多个ajax回调附加到一个表单元素。但是,您可以通过扩展核心元素来覆盖回调:
/src/Element/MyManagedFile.php
addCommand(new AlertCommand('Hello!!!'));
return $response;
}
}然后在自定义表单中使用它:
$form['file'] = array(
'#title' => t('Image File'),
'#type' => 'my_managed_file',https://drupal.stackexchange.com/questions/298198
复制相似问题