Как вы изменяете ссылки на сущности на форме в пользовательском действии Ajax в Drupal 8? - PullRequest
0 голосов
/ 16 мая 2018

Я добавил пользовательскую кнопку в форму:

    $form['actions']['autotag_content'] = [
     '#type' => 'button',
     '#value' => 'Autotag Content',
     '#ajax' => [ 
       'callback' => ['\Drupal\taxonomy_migrate\taggerService', 'tagContent'],
       'wrapper' => ['block-adminimal-theme-content'],
       'progress' => [ 
         'type' => 'throbber',
         'message' => 'Tagging content',
       ],
     ],
   ];

Затем в обратном вызове я хочу добавить или удалить объекты из поля ссылки на объект в форме.Затем он будет отправлен обратно в браузер и повторно обработан.Я не хочу, чтобы изменения были сохранены, я просто хочу, чтобы они заполнились в форме, и тогда пользователь может принять изменения.

Ради этого примера я упростил это, чтобы просто продемонстрировать смысл,Я хотел бы добавить две ссылки на сущности к field_tax_subjects и сделать повторное отображение формы внешнего интерфейса.В настоящее время форма интерфейса обновляется, но не отражает изменения

public static function tagContent(array &$form, FormStateInterface &$form_state) {
  $node = $form_state->getFormObject()->getEntity();

  $node->field_tax_subjects[] = 12345;
  $node->field_tax_subjects[] = 23456;

  $form = \Drupal::service('entity.form_builder')->getForm($node);
  $form_state->setRebuild();

  return $form;
}

1 Ответ

0 голосов
/ 16 мая 2018

Мой ответ только на тот случай, если ваш AJAX работает, потому что в вашем вопросе у вас нет полного кода формы, а также не понятна его форма узла или что-то еще

Если ваш AJAX работает, выНужно только исправить, как установить значение для поля ссылки на сущность и поданной ссылки на термин

для ссылки на сущность и ссылки на термин

public static function tagContent(array &$form, FormStateInterface &$form_state) {
  $node = $form_state->getFormObject()->getEntity();

  // for entity refrence
  $node->field_tax_subjects[]['target_id'] = 12345;
  $node->field_tax_subjects[]['target_id'] = 23456;

  // for term reference
  //$node->field_tax_subjects[]['tid'] = 12345;
  //$node->field_tax_subjects[]['tid'] = 23456;

  $form = \Drupal::service('entity.form_builder')->getForm($node);
  $form_state->setRebuild();

  return $form;
}

НАДЕЖДАТЬСЯ ЭТО ПОМОЩЬ ВАМ

СПАСИБО

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...