it-swarm-vi.com

Làm cách nào để thêm trường văn bản vào biểu mẫu trang người dùng / đăng ký trong drupal 7?

Tôi muốn sửa đổi và thêm một trường văn bản trong Drupal 7 trang đăng ký/người dùng của tôi. Tôi biết rằng biểu mẫu được tạo bởi hàm user_register_form()

Tôi có thể thêm một trường văn bản theo cách này?

function bartik_copy_user_login($form, &$form_state) {
  global $user;

  // If we are already logged on, go to the user page instead.
  if ($user->uid) {
    drupal_goto('user/' . $user->uid);
  }

  // Display login form:
  $form['name'] = array('#type' => 'textfield',
    '#title' => t('Username'),
    '#size' => 60,
    '#maxlength' => USERNAME_MAX_LENGTH,
    '#required' => TRUE,
  );

  $form['name']['#description'] = t('Enter your @s username.', array('@s' => variable_get('site_name', 'Drupal')));
  $form['pass'] = array('#type' => 'password',
    '#title' => t('Password'),
    '#description' => t('Enter that accompanies your username.'),
    '#required' => TRUE,
  );
$form['address'] = array('#type' => 'textfield',
    '#title' => t('Your address'),
    '#size' => 60,
    '#maxlength' => 125,
    '#required' => TRUE,
  );

  $form['#validate'] = user_login_default_validators();
  $form['actions'] = array('#type' => 'actions');
  $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Log in'));

  return $form;
}
8
gbwebservice

Tôi thà thực hiện hook_form_FORM_ID_alter () để thêm trường biểu mẫu.

function mymodule_form_user_register_form_alter(&$form, &$form_state, $form_id) {
  $form['address'] = array('#type' => 'textfield',
    '#title' => t('Your address'),
    '#size' => 60,
    '#maxlength' => 125,
    '#required' => TRUE,
  );
}

Theo cách này, trường biểu mẫu sẽ được thêm vào biểu mẫu đăng ký.

7
kiamlaluno

Drupal 7 cung cấp khả năng thêm các trường tùy chỉnh cho Người dùng thông qua admin/config/people/accounts/fields. Chức năng này đã có trong lõi.

10
nmc

Ví dụ về cách thêm lập trình các trường vào hồ sơ người dùng và cách tận dụng chúng, hoặc không, vào biểu mẫu Đăng ký người dùng.

function MYMODULE_enable() {
  // Check if our field is not already created.
  if (!field_info_field('field_myField')) {
    $field = array(
      'field_name' => 'field_myField', 
      'type' => 'text', 
    );

    field_create_field($field);

    // Create the instance on the bundle.
    $instance = array(
      'field_name' => 'field_myField', 
      'entity_type' => 'user', 
      'label' => 'My Field Name', 
      'bundle' => 'user', 
      // If you don't set the "required" property then the field wont be required by default.
      'required' => TRUE,
      'settings' => array(
        // Here you inform either or not you want this field showing up on the registration form.
        'user_register_form' => 1,
      ),
      'widget' => array(
        'type' => 'textfield',
      ), 
    );

    field_create_instance($instance);
  }
}
4
Francisco Luz

Bạn có thể sử dụng hook_form_FORM_ID_alter () để thêm các trường mới vào biểu mẫu đăng ký trong Drupal 7.

Dưới đây là ví dụ về việc thêm trường xác nhận e-mail bổ sung bao gồm cả gọi lại xác thực.

/**
 * Implements hook_form_FORM_ID_alter().
 */
function foo_form_user_register_form_alter(&$form, &$form_state, $form_id) {
  $form['account']['mail_confirm'] = array(
    '#type' => 'textfield',
    '#title' => t('Confirm e-mail address'),
    '#maxlength' => EMAIL_MAX_LENGTH,
    '#description' => t('Please confirm your e-mail address.'),
    '#required' => TRUE,
  );
  $form['#validate'][] = 'foo_user_register_form_validate';
}

/**
 * Implements validation callback.
 */
function foo_user_register_form_validate(&$form, &$form_state) {
  if ($form_state['values']['mail'] != $form_state['values']['mail_confirm']) {
    form_set_error('mail_confirm', 'The email addresses must match.');
  }
}
1
kenorb