Làm thế nào để thêm các trường bổ sung vào hồ sơ người dùng?


22

Tôi muốn thêm các trường bổ sung vào hồ sơ người dùng. Tôi muốn người dùng có thể chỉnh sửa hầu hết tất cả thông tin tôi lưu trữ trong cơ sở dữ liệu về anh ta. Tôi có một số ý tưởng: có thể sử dụng mẫu api.


blog chi tiết có tại đây: goo.gl/zxBTBY
Suresh Kamrushi

Câu trả lời:


23

Một cách để thêm các trường người dùng bằng mã để bạn có thể đặt trường này vào mô-đun của mình.

Tôi đã tìm thấy điều này: field_create_field với trong các nhận xét một cách để tạo trường cho người dùng của bạn khi bật mô-đun của bạn:

/**
 * Implementation of hook_enable().
 */
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',
            'weight' => '1',
        ), 
    );
    field_create_instance($instance);
  }
}

1
Tôi tìm thấy trang rất hữu ích này giải thích cách xuất các trường được tạo bằng UI. Việc xuất này sau đó có thể được sử dụng với field_create_field và field_create_instance để thực hiện mọi thứ theo chương trình
Whiskey

Cảm ơn, điều này rất hữu ích - có ý tưởng làm thế nào để tự động gán trọng lượng không?
quán tính

bạn có thể thêm 'weight' => '1',vào mảng widget $instancetrong câu trả lời của tôi.
FLY

Đối với trường hợp phức tạp, nó rất hữu ích để đầu tiên thêm lĩnh vực này bằng tay trên /admin/config/people/accounts/fields, sau đó sử dụng Dòng Inspector trên /admin/config/development/field-inspectorđể xuất khẩu các mảng nét dụ lĩnh vực và lĩnh vực sử dụng trong mã như trên.
tanius

Để giữ DB sạch, bạn cũng có thể muốn triển khai hook_uninstall để xóa trường. function MYMODULE_uninstall() {field_delete_field('field_myField');}
dxvargas

35

Tôi thấy trang này khó tìm, nhưng tại / admin / config / people / Tài khoản / trường bạn có thể thêm các trường cho người dùng.


2
Cảm ơn bạn, nhưng tôi có thể làm điều đó bằng cách sử dụng mẫu api? Tôi cần nhiều chức năng hơn.
Alexey

bạn muốn làm gì, điều đó là không thể với các trường?
Attiks

Tôi đã tạo các lĩnh vực của riêng mình trong bảng Drupal users. "Các trường" tạo các trường mới bên ngoài bảng users.
Alexey

đó là cách thức hoạt động của drupal, tại sao bạn muốn lưu trữ các trường bên trong bảng người dùng?
Attiks

Theo ý kiến ​​của tôi, đó là cách thuận tiện hơn để làm điều đó. Nhân tiện, để thêm các lĩnh vực tôi sử dụnghook_form_alter(&$form, &$form_state, $form_id)
Alexey


4

Trong Drupal 7, sử dụng quy trình này để thêm trường mới hoặc trường hiện có với các loại trường khác nhau (chẳng hạn như trường Hình ảnh, thẻ, v.v.) vào hồ sơ người dùng:

  1. Kích hoạt mô-đun UI UI .
  2. Chuyển đến " Quản trị viên → Cấu hình → Mọi người: Cài đặt tài khoản " trong menu quản trị viên, sau đó đến " Quản lý các trường " (tab thứ hai).

    (Hoặc, sử dụng đường dẫn trực tiếp trong URL /admin/config/people/accounts/fields:).

  3. Điền vào dòng "Thêm trường mới" hoặc "Thêm trường hiện có" ở cuối biểu mẫu và nhấp vào "Lưu".

1

Những loại lĩnh vực nào bạn muốn thêm?

  • Nếu đây là trang mạng xã hội và bạn đang thêm các trường cài đặt quyền riêng tư, hãy sử dụng mô-đun Quyền riêng tư trên mỗi người dùng .
  • Nếu bạn muốn thêm các tab hoặc trường accordion, hãy sử dụng mô-đun field_group để thêm các nhóm mới vào các trường tài khoản người dùng (URL: / admin / config / people / Tài khoản / trường).
  • Và nếu bạn muốn các trường khác nhau cho các vai trò khác nhau, hãy sử dụng mô-đun profile2 .
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.