Como adicionar campos extras ao perfil do usuário?


22

Eu gostaria de adicionar campos adicionais ao perfil do usuário. Eu gostaria que o usuário pudesse editar quase todas as informações que guardo no banco de dados sobre ele. Eu tenho algumas idéias: talvez seja possível fazer usando a API do formulário.


blog de detalhes está aqui: goo.gl/zxBTBY
Suresh Kamrushi

Respostas:


23

Uma maneira de adicionar campos de usuário por código, para que você possa colocar isso em seu módulo.

Eu encontrei o seguinte: field_create_field com nos comentários uma maneira de criar um campo para seu usuário ao ativar seu módulo:

/**
 * 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
Encontrei esta página muito útil , que explica como exportar campos criados com a interface do usuário. Esta exportação pode, então, ser usado com field_create_field e field_create_instance fazer tudo por meio de programação
Whiskey

Obrigado, isso foi muito útil - tem uma idéia de como atribuir automaticamente o peso também?
inertialmedia

você pode adicionar 'weight' => '1',à matriz de widgets no $instanceeu adicionarei na minha resposta.
FLY

Para casos complexos, é útil para primeiro adicionar o campo manualmente em /admin/config/people/accounts/fields, em seguida, usar Inspector campo em /admin/config/development/field-inspectorexportar as matrizes definição de instância de campo e de campo para uso em código como o acima.
11135 tanius

Para manter o banco de dados limpo, você também pode implementar um hook_uninstall para excluir o campo. function MYMODULE_uninstall() {field_delete_field('field_myField');}
Dxvargas 06/07/19

35

Achei a página difícil de encontrar, mas em / admin / config / people / accounts / fields você pode adicionar campos aos usuários.


2
Obrigado, mas posso fazê-lo usando o formulário api? Eu preciso de mais funcionalidade.
Alex11

o que você quer fazer e que não é possível com os campos?
Attiks

Eu já criei meus próprios campos na tabela Drupal users. "Campos" criam novos campos fora da tabela users.
Alexey

é assim que o drupal funciona. Por que você deseja armazenar os campos na tabela de usuários?
Attiks

É a maneira mais conveniente de fazer isso na minha opinião. A propósito, a fim de adicionar campos extras que eu usohook_form_alter(&$form, &$form_state, $form_id)
Alexey


4

No Drupal 7, use esse processo para adicionar um campo novo ou existente com diferentes tipos de campo (como Imagem, campo Tags etc.) ao perfil do usuário:

  1. Ative o módulo UI do campo .
  2. Vá para " Admin → Configuração → Pessoas: configurações da conta " no menu do administrador e depois para " Gerenciar campos " (a segunda guia).

    (Como alternativa, use o caminho direto no URL:) /admin/config/people/accounts/fields.

  3. Preencha a linha "Adicionar novo campo" ou "Adicionar campo existente" na parte inferior do formulário e clique em "Salvar".

1

Que tipo de campos você deseja adicionar?

  • Se este é um site de rede social e você está adicionando campos de configurações de privacidade, use o módulo Privacidade por usuário .
  • Se você deseja adicionar guias ou campos de acordeão, use o módulo field_group para adicionar novos grupos aos campos da conta do usuário (URL: / admin / config / people / accounts / fields).
  • E se você quiser campos diferentes para funções diferentes, use o módulo profile2 .
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.