2012-09-27 114 views
1

我使用Drupal 7.x. 我在用戶配置文件表單中添加了幾個字段。drupal 7使字段在form_user_profile_form_alter中需要

在註冊我不需要他們,但在第一次登錄時,它必須填寫。 我無法使用Profile2模塊。

在我的模塊:

function mymodule_form_user_profile_form_alter(&$form, &$form_state) {  
      $form['field_test_field']['#required'] = 'TRUE'; 
} 

功能被激發,但不要讓它要求。

我也試過:

$form['field_test_field'][0]['#required'] = 'TRUE'; 
$form['#field_info']['field_test_field']['required'] = '1'; 

怎樣才能使一個user_profile_form場的形式需要改變?

回答

0

您目前正在將#required設置爲一個字符串(使用單引號),而不是它需要的布爾值。給這個一去$form['field_test_field']['#required'] = true;

+0

我試着不讓工作 – Joseph

0

我找到了解決辦法:How to disable a field or make it readonly in Drupal 7

$form['field_secured_title']['und']['0']['value']['#attributes']['disabled'] = TRUE; 

這個工作。

但是,如果我使用多種語言它仍然工作?

對不起,我的英語。

+0

的'und'鍵定義語言(目前未定義)。實際上,如果你使用常量'LANGUAGE_NONE'而不是'und',那麼可能會更好。如果你使用不同的語言,這是你需要改變的。 – nmc

2

下面的例子可以用於文本字段:

$form['field_full_name'][LANGUAGE_NONE]['0']['value']['#required'] = TRUE;

第二個例子是電子郵件領域:

$form['field_custom_email_address'][LANGUAGE_NONE]['0']['email']['#required'] = TRUE;