Следующий фрагмент кода находится в модуле «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 кстати