Рейтинг:0

Фильтрация набора результатов entity_autocomplete

флаг ml

Следующий фрагмент кода находится в модуле «nodeaccess». На данный момент автозаполнение позволяет вам искать любого пользователя в БД. Я хотел бы вернуть только пользователей с ролью A или ролью B.

if ($user->hasPermission('доступ к профилям пользователей')) {
  $ форма ['ключи'] = [
    '#type' => 'entity_autocomplete',
    '#default_value' => isset($form_values['keys']) ? $form_values['ключи'] : '',
    '#размер' => 40,
    '#target_type' => 'пользователь',
    '#title' => $this->t('Введите имена для поиска пользователей'),
  ];
}

я нашел это ссылка, которая, похоже, делает что-то похожее на то, что я хотел бы, но, похоже, она не работает, просто заменяя условный оператор. Я пошел и изменил его, чтобы он выглядел следующим образом:

функция my_custom_module_query_alter ($ запрос) {
  если ($query->hasTag('user_acccess')) {
    $or = db_or()->условие('user__roles.roles_target_id', 'A')- 
    >условие('user__roles.roles_target_id', 'B');
    $запрос->условие($или);
  }
}

Это запрос, который я сделал неправильно? Или, возможно, это тег user_access, который не соответствует первому фрагменту кода выше? Мы будем очень признательны за любые рекомендации.

О, и мой сайт работает на Drupal Core 8.9.8 кстати

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

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