Рейтинг:-2

Встроенная форма объекта: изменить автозаполнение

флаг nl

Мне нужно изменить отображение ответа автозаполнения «Добавить существующий узел»:

  • Добавьте тип содержимого и дополнительную информацию из содержимого (местоположение), отобразите результат в две строки.
  • Инициировать автозаполнение, только если введено не менее 6 символов
  • изменить сортировку запроса (ORDER BY измененный)

Каков наилучший способ для этого?

Рейтинг:1
флаг de

Я нашел способ справиться с этим (часть в вашем случае) с представлением типа Entity Reference, где поля, которые вы установили в представлении, - это то, что будет отображаться в поле автозаполнения, и вы можете использовать доступные фильтры и сортировки. Пример:

function MYMODULE_inline_entity_form_reference_form_alter(&$reference_form, FormStateInterface $form_state) {
  $form_id = $form_state->getFormObject()->getFormId();
  если ($form_id === 'node_article_edit_form' || $form_id === 'node_article_form') {
    $reference_form["entity_id"]["#selection_handler"] = 'представления';
    $reference_form["entity_id"]["#selection_settings"] = [
      "просмотреть" => [
        "имя_представления" => "имя_представления",
        "display_name" => "my_view_display_name",
      ],
    ];
  }
}

Я надеюсь, что это поможет кому-то еще

Рейтинг:0
флаг nl

Спасибо @chalo

это помогло применить мою пользовательскую конечную точку автозаполнения (вместо использования представлений) Вот мой рабочий пример, основанный на ответе @chalos.

$reference_form['entity_id'] = array_merge(
  $reference_form['entity_id'], [
    '#тип' => 'текстовое поле',
    '#autocomplete_route_name' => 'cnfpt_internet.autocomplete',
    '#autocomplete_route_parameters' => [
      'имя_поля' => 'видео_поля',
      'target_type' => $reference_form['entity_id']['#target_type'],
      'bundle_name' => 'inline_entity_form',
      'выбор_обработчик' => '',
      'selection_settings_key' => '',
      'entity_id' => 0,
    ],
  ]

Моя проблема заключалась в том, что я не использовал правильный хук, чтобы перехватить автозаполнение нативной сущности и заменить его пользовательским.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.