web-dev-qa-db-ja.com

form_alterフックを使用して非表示のフォームフィールドに値を割り当てることができません

私はフィールドmy_consultant_idは「非表示の整数」タイプのフィールドであり、ウィジェットのタイプは「非表示のフィールド」です。

hook_form_alter を使用して、このフィールドに値を割り当てています

function threebl_summary_report_form_alter(&$form, &$form_state, $form_id) {
    if($form_id == 'eck__entity__form_add_summary_report_comparative_client_gro‌​up') {
        global $user; 
        $form['field_created_by']['und'][0]['#default_value'] = (int) $user->uid;
    }
}

ただし、そのフィールドの値を設定することはできません。

フォームを検査すると、次のようなフィールドのhtmlコードが表示されます。

<div class="field-type-field-hidden-integer field-name-field-my-consultant-id field-widget-field-hidden form-wrapper" id="edit-field-my-consultant-id">

前もって感謝します。

4
Santosh Jagtap

フォームの検証ハンドラーでなんとかしました。検証ハンドラーを使用して、送信する前にフォーム変数に値を割り当てました。

以下のようなフォームの変更フック呼び出し検証ハンドラー

$form['#validate'][] = 'my_module_name_form_validate';

そして以下は検証ハンドラ関数コードです

function my_module_name_form_validate(&$form, &$form_state) {    
$form['field_my_field']['#parents'] = array('field_my_field');
form_set_value($form['field_my_field'],array('und' => array(0 => array('value' => $new_value))),$form_state);

}

参考のために link

3
Santosh Jagtap

デフォルト値がないと思います。

試す

$form["my_consultant_id"][LANGUAGE_NONE][0]['value']['#default_value'] = (int)$user->uid;
0
DRUPWAY