0

ページに要素を表示する際に問題が発生しました。ロールラジオの選択に応じて、選択要素を表示する必要があります。したがって、次のような要素を隠しています。

$form['field_test_field']['#access'] = 0;

しかし、状態が変化した場合、1 をバインドすることで元に戻すことはできません。これが私のスニペットです。

function seven_form_user_register_form_alter(&$form, &$form_state, $form_id) {
    $form['account']['roles']['#ajax'] = array(
        'callback' => 'seven_dynamic_form_ajax_callback',
        'wrapper' => 'replace_droplist',
        'event' => 'change',
    );

    $form['field_test_field']['#prefix'] = '<div id="replace_droplist">';
    $form['field_test_field']['#suffix'] = '</div>';
    $form['account']['roles']['#type'] = 'radios';

    $checkedRole = isset($form_state['values']['roles'])
        ? $form_state['values']['roles'] : 0;

    if ($checkedRole == 0) {
        $form['field_test_field']['#access'] = 1;
    } elseif ($checkedRole == 4) {
        $form['field_test_field']['#access'] = 0;
    } elseif ($checkedRole == 3) {
        $form['field_test_field']['#access'] = 1;
    }
};

function seven_dynamic_form_ajax_callback($form, $form_state) {
    return $form['field_test_field'];
}

ありがとう。

4

1 に答える 1