Список имен пользователей в поле Выбора параметра


Я использую веб-формы и хочу добавить поле выбора параметров со списком всех имен пользователей для аутентификации. И если какой-либо новый пользователь добавит на мой сайт, он автоматически добавится в этот список Возможно ли это? если да, то как?

Author: Mohit Goyal, 2013-06-09

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.

 1
Author: hw., 2013-06-09 16:56:56

Вы могли бы использовать модуль Ссылки . Этот модуль позволяет использовать результаты представления в качестве значений для поля.

 1
Author: Sorin S., 2013-06-09 14:35:58

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

Используя рефренс сущности, вы можете заставить это работать примерно за 2 минуты.

 1
Author: Sohail, 2013-06-09 17:18:57

Вы можете поместить этот код в качестве второй функции, чтобы получить список пользователей:

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;
}
 0
Author: Aporie, 2014-10-16 12:04:54