Drupal 8中字段窗口小部件的默认值

Drupal 8中字段窗口小部件的默认值,drupal,drupal-modules,drupal-8,Drupal,Drupal Modules,Drupal 8,我有一个自定义字段,它扩展了ImageField以向图像添加复选框,类似于图像字段包含标题和alt信息的文本字段。我可以让复选框显示,并将值保存为在格式化程序页面上显示的值,但我不知道如何获取复选框的默认值。我的代码初始化formElement函数中的复选框: public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface

我有一个自定义字段,它扩展了ImageField以向图像添加复选框,类似于图像字段包含标题和alt信息的文本字段。我可以让复选框显示,并将值保存为在格式化程序页面上显示的值,但我不知道如何获取复选框的默认值。我的代码初始化formElement函数中的复选框:

public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {

  $element = parent::formElement($items, $delta, $element, $form, $form_state);
  $field_settings=$this->getFieldSettings(); 

  // Setup how the show_image field is shown on the node edit form.
  $element['#show_image'] = $field_settings["show_image"];                        

  return $element;
}
然后在上载文件并调用进程回调函数时创建复选框字段:

/**
 * {@inheritdoc}
 *
 * This is a callback from formElement.  For example, this could be triggered from an ajax call.
 */
public static function process($element, FormStateInterface $form_state, $form) {

  $item = $element['#value'];
  $item['fids'] = $element['fids']['#value'];    

  $element["show_image"] = array(
    '#default_value' => $element['#show_image'],
    '#type' => 'checkbox',
    '#title' => t('Show image on website'),
    '#description' => t('This may be from an external source. Show on the website?'),
    '#weight' => 10,
    '#access' => (bool) $item['fids']
  );   

  return parent::process($element, $form_state, $form);
}
更改#default_value键后,我似乎无法让表单在新上载时显示默认设置“checked”,并显示在以前保存的节点中保存的正确值。例如,如果我设置

#默认值=>$element['#显示图像']

无论用户保存什么,我总是得到默认值。如果我这样设置:

isset($item['show_image']) ? $item['show_image'] : $element['#show_image']
它始终显示保存的值,而不是默认值,即使在新上载时也是如此。所以我的问题是,如何显示新上传的默认值和更新的保存值