Список имен пользователей в поле Выбора параметра
Я использую веб-формы и хочу добавить поле выбора параметров со списком всех имен пользователей для аутентификации. И если какой-либо новый пользователь добавит на мой сайт, он автоматически добавится в этот список Возможно ли это? если да, то как?
4 answers
Вам нужно заглянуть в hook_webform_select_options_info.
Это довольно прямолинейно. Вы используете крючок, чтобы определить новый вид списка опций выбора и зарегистрировать обратный вызов. При обратном вызове вы возвращаете список всех пользователей.
Предполагая, что имя вашего модуля webform_users_list
.
/**
* Implementation of hook_webform_select_options_info.
*/
function webform_users_list_webform_select_options_info() {
$items = array();
$items['users_list'] = array(
'title' => t('List of registered users'),
'options callback' => 'webform_users_list_get_list',
'options arguments' => array(),
);
return $items;
}
function webform_users_list_get_list($component, $flat, $filter, $arguments) {
// Get list of users through a method such as EntityFieldQuery or db_select.
return $users;
}
Если обратный вызов находится в другом файле, вам необходимо определить 'file'
в массиве в hook_webform_select_options_info
в соответствии с обычными соглашениями Drupal.
Чтобы использовать это в своей веб-форме, добавьте регулярно выбирайте опцию в своей веб-форме, и во время настройки вы сможете выбрать список опций как List of registered users
.
Вы могли бы использовать модуль Ссылки . Этот модуль позволяет использовать результаты представления в качестве значений для поля.
Я только что сделал нечто похожее сегодня, используя модуль формы сущности вместо веб-формы, который может иметь те же результаты.
Используя рефренс сущности, вы можете заставить это работать примерно за 2 минуты.
Вы можете поместить этот код в качестве второй функции, чтобы получить список пользователей:
function webform_users_list_get_list($component, $flat, $arguments) {
$all_users = entity_load('user');
foreach($all_users as $value) {
$user_list = (array)$value;
if($user_list['uid'] > 1) {
$user_names[$user_list['uid']] = $user_list['name'];
}
}
return $user_names;
}
Таким образом, полный файл webform_users_list.module будет выглядеть следующим образом:
/**
* Implementation of hook_webform_select_options_info.
*/
function webform_users_list_webform_select_options_info() {
$items = array();
$items['users_list'] = array(
'title' => t('List of registered users'),
'options callback' => 'webform_users_list_get_list',
'options arguments' => array(),
);
return $items;
}
/* Get user list and return it */
function webform_users_list_get_list($component, $flat, $arguments) {
$all_users = entity_load('user');
foreach($all_users as $value) {
$user_list = (array)$value;
if($user_list['uid'] > 1) {
$user_names[$user_list['uid']] = $user_list['name'];
}
}
return $user_names;
}