2016-10-03 7 views
0

Я должен разработать систему, которая позволяет мне предоставить предварительный просмотр полей на основе пользователя. Например, у нас есть 3 Combobox. Администратор может видеть и использовать все 3 Combobox, а просто один пользователь только 2. Как я могу это сделать на веб-форме? Thank youКак отображать поля веб-формы на основе взаимодействия с пользователем

ответ

1

Лучший способ Drupal сделать это - использовать Разрешение.

В вы модуль, объявить следующее:

/** 
* Implements hook_permission 
*/ 
function yourmodule_permission() { 
    return array(
     'access combobox 1' => array(
      'title'  => t('Access combobox 1'), 
      'description' => t('Allow user to view combobox 1') 
     ), 
     'access combobox 2' => array(
      'title'  => t('Access combobox 2'), 
      'description' => t('Allow user to view combobox 2'), 
     ), 
    ); 
} 

то в вашей форме, использовать эти разрешения для отображения выпадающего:

// Définition du composant du choix du schéma de base. 
    $form['combobox_1'] = array(
      '#access'  => user_access('access combobox 1'), 
      '#type'   => 'select', 
      '#title'   => 'yourtitle', 
      '#options'  => array_keys(...), 
    ); 

    $form['combobox_2'] = array(
      '#access'  => user_access('access combobox 2'), 
      '#type'   => 'select', 
      '#title'   => 'yourtitle', 
      '#options'  => array_keys(...), 
    ); 

И потом, нужно просто проверить, какую роль пользователя имеют это разрешение в вашем «/admin/people/permissions» страница;)

+0

Есть ли модуль для этого? – JoeJoe

+0

Эта функция напрямую предоставляется ядром Drupal. Вам просто нужно написать правильный крючок;) –

+0

Спасибо @ M.Be, вы можете помочь мне сделать эту операцию? Я неофит для Друпала. 1. Я вставляю блок hook в модуль Webform, меняя combobox на User Reference (потому что мне нужно создать опцию выбора для пользователей). 2. Где ввести второй блок кода? Спасибо soo – JoeJoe

 Смежные вопросы

  • Нет связанных вопросов^_^