내가 알 수있는 유일한 방법은 D7에서 #ajax를 사용하는 것입니다.
다음은 시작하기 전에 알고 싶었던 유용한 팁입니다.
- 양식 API의 #ajax는 훌륭하고 배울 가치가 있습니다.
- #states는 OR 또는 XOR을 지원하지 않습니다 (패치가 없습니까? http://drupal.org/node/735528 )
- dpm ($ form); 사용자 정의 제출 함수의 var_dump ($ form_state)는 값이 없습니다.
다음은 예제 모듈에서 AJAX 예제 중 하나의 수정 된 버전입니다.
function plugin_autotextfields($form, &$form_state) {
$form['star_rating'] = array(
'#type' => 'select',
'#title' => t('Star Rating'),
'#options' => array('_none' => '- select -', 5 => '5 Star', 4 => '4 Star', 3 => '3 Star', 2 => '2 Star', 1 => '1 Star'),
'#ajax' => array(
'callback' => 'plugin_autotextfields_callback',
'wrapper' => 'textfields',
'effect' => 'fade',
),
);
$form['textfields'] = array(
'#title' => t("Fieldset Name"),
'#prefix' => '<div id="textfields">',
'#suffix' => '</div>',
'#type' => 'fieldset',
'#description' => t('Where the field will be placed'),
);
if (!empty($form_state['values']['star_rating']) && $form_state['values']['star_rating'] == 5) {
$form['textfields']['review'] = array(
'#type' => 'textfield',
'#title' => t('Message if 5 stars'),
);
} else if (!empty($form_state['values']['star_rating'])) {
$form['textfields']['review'] = array(
'#type' => 'textfield',
'#title' => t('Message if not 5 stars'),
);
}
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Click Me'),
);
return $form;
}
function omfg_autotextfields_callback($form, $form_state) {
return $form['textfields'];
}
나는 이것이 동일한 문제에 부딪 치는 누군가를 돕기를 바랍니다 :)