как мне сделать другую регистрационную форму в drupal?

Есть ли модуль, который может создавать разные регистрационные формы для разных ролей во время регистрации? (например, каждая роль редактора, главного пользователя, дополнительного пользователя имеет разную форму)


person MJH    schedule 14.02.2011    source источник
comment
И как узнать, какая роль будет у пользователя до того, как он зарегистрируется?   -  person mingos    schedule 14.02.2011
comment
с URL-адресом (например, reg/editor, reg/main, reg/sub)   -  person MJH    schedule 14.02.2011


Ответы (3)


Там есть :)

http://drupal.org/project/autoassignrole

для назначения по пути вам также понадобится Content Profile:

http://drupal.org/project/content_profile

посмотрите этот урок о том, как это сделать:

http://www.web-a-team.com/blog-post/user-registration-more-one-role

person jpstrikesback    schedule 14.02.2011
comment
я установил это, но как создать другую страницу? с разными полями профиля? - person MJH; 14.02.2011
comment
вот мини-руководство, которое должно объяснить это, я также отредактировал свой ответ, чтобы отразить второй необходимый модуль - person jpstrikesback; 14.02.2011
comment
tnx, но моя проблема не решена. Я хочу, например, на странице reg/main user иметь имя отца, но в reg/sub user есть поле Brother Name! - person MJH; 15.02.2011
comment
Это должно быть одной из основных причин использования предложенного мной решения. Пробовали ли вы добавить новое поле в свои новые профили контента? - person jpstrikesback; 15.02.2011

Вот что вы должны сделать

  1. начните с установки profile2-7.x-1.2.tar.gz.
  2. entity-7.x-1.0-rc3.tar.gz после установки profile2 -->
  3. включить --> нажмите "Настроить" - (Здесь вы видите свои типы профилей - добавьте столько, сколько хотите).

когда вы добавляете новый или изменяете существующий «Основной», убедитесь, что вы отметили «Предоставить отдельную страницу для редактирования профилей». 4. Теперь, чтобы установить и включить разные страницы регистрации, логина и пароля, profile2_regpath-7.x-1.9.tar.gz. Теперь снова посетите страницу типов профилей, здесь вы должны увидеть «УНИКАЛЬНЫЙ ПУТЬ РЕГИСТРАЦИИ»... остальное просто..

person Ashish Madkaikar    schedule 19.09.2012
comment
@MJH, вы можете добавить поля, необходимые для типа профиля, точно такие же поля будут отображаться в регистрационной форме и форме просмотра профиля для определенного типа профиля. - person Ashish Madkaikar; 20.09.2012

Вот некоторая идея, как решить ваш вопрос в drupal 7 (я думаю, что это должно работать и в drupal 6). Однако это небезопасно, поскольку любой может просто изменить свою роль:

function my_module_form_user_register_form_alter(&$form, &$form_state, $form_id) {

    $company_role = $form_state['build_info']['args'][0];

    $form['account']['company_role'] = array(
        '#type'         => 'select',
        '#title'        => t('Company role'),
        '#options'      => drupal_map_assoc(array('editor','main user','Sub User')),
        '#description'  => t('Please select your company role'),
        "#empty_option" =>t('- Select -'),
        '#weight'       => -11,  // Add the select box above username that have weight -10

    );

    switch (strtolower($company_role)) {
        case 'editor':
            // add extra fields for editor
            $form['account']['company_role']['#default_value'] = $company_role;
            break;
        case 'main user':
            // add extra fields for main
            $form['account']['company_role']['#default_value'] = $company_role;
        case 'sub user';
            // add extra fields for 'Sub User'
            $form['account']['company_role']['#default_value'] = $company_role;
            break;
        default:
            $form['account']['company_role']['#empty_option'] = t('- Select -');
            $company_role = null;// error handling or default case
    }

}

Если, например, в вашей компании есть LDAP, вы можете вместо этого получить эту информацию от LDAP(https://www.drupal.org/node/1053748). Тогда вы сможете быть более уверены в том, что роль выбрана правильно.

person Triss    schedule 30.04.2016