Есть форма выбора селект условно Форма 0
<?php
function test_form_form1() {
$options = array (
1 => 'Value 1',
2 => 'Value 2'
);
//форма с радио баттонами
$form['test_type'] = array(
'#prefix' => '<table border = "3" cellpadding = "0" cellspacing = "0" style = "width:auto"><tr><td style = "width:10%">',
'#type' => 'radios',
'#options' => $options,
'#description' => t('ch'),
'#suffix' => '</td></tr></table>'
);
//терь кнопки отправить и зачистить форму
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
$form['clear'] = array(
'#type' => 'submit',
'#value' => t('Reset'),
'#validate' => array ('test_form_clear'),
);
return $form;
}
?>
Как сделать при выборе например Value 1 -> чтобы генерировалась под основной Формой 0 Форма 1, при выбора Value 2 -> генерировалась Форма 2
Комментарии
AHAH, AHAH, и ещё раз AHAH
Если нетрудно приведите пример
Все примеры давно есть в гугле: http://www.nicklewis.org/node/967
Нашёл отличный модуль там со списком правда, но функционал аналогичный прилагаю исходный код
ahah.info
name = ahah
description = Example ahah
core = 6.x
********************************************************************
ahah.module
<?php
$n=$_POST['s1'];
$form=form_get_cache($form_build_id,$form_state);
$form=form_builder('ahah_ahah',$form,$form_state);
$output=drupal_render($form['s2']);
$form=array();
$form['s2']=array(
$form['submit']=array(
# 2008.07.08
# http://www.vikeng.info/ function ahah_perm(){
return array('ahah');
};
function
ahah_menu(){$items['testahah']=array(
'title'=>t('Тест AHAH'),
'access arguments'=>array('ahah'),
'page callback'=>'drupal_get_form',
'page arguments'=>array('ahah_ahah')
);
$items['out_select_js']=array(
'title'=>'Построение списка',
'page callback'=>'ahah_get_select',
'access arguments' => array('ahah'),
'type'=>MENU_CALLBACK
);
return $items;
} # Получение данных для второго select'a
function ahah_get_list($n){
switch(
$n){case 0:
$list_fields=array(0=>'Нет данных');
break;
case 1:
$list_fields=array(1=>'1-1',2=>'1-2',3=>'1-3');
break;
case 2:
$list_fields=array(1=>'2-1',2=>'2-2',3=>'2-3');
break;
case 3:
$list_fields=array(1=>'3-1',2=>'3-2',3=>'3-3');
break;
default:
$list_fields=array(1=>'1-1',2=>'1-2',3=>'1-3');
}
return $list_fields;
} # Построение второго списка
function ahah_build_select($n){
$form=array();
$form['s2']=array(
'#type'=>'select',
'#title'=>'Список 2',
'#options'=>ahah_get_list($n),
'#default_value'=>0
);
return $form;
}
function
ahah_get_select(){$form_element=ahah_build_select($n);
drupal_alter('form', $form_element, array(), 'out_select');
$form_state=array('submitted'=>FALSE);
$form_build_id=$_POST['form_build_id'];
$form['s2']=$form_element;
form_set_cache($form_build_id,$form,$form_state);
drupal_json(array('status'=>'TRUE','data'=>$output));
exit();
}
function
ahah_ahah(&$form_state){$form['s1']=array(
'#type'=>'select',
'#title'=>'Список 1',
'#options'=>array(0=>'Ваш выбор...',1=>'Поле 1',2=>'Поле 2',3=>'Поле 3'),
'#default_value'=>0,
'#ahah'=>array(
'path'=>'out_select_js',
'wrapper'=>'edit-s2-wrapper',
'method'=>'replace',
'effect'=>'slide',
'progress' => array('type' => 'bar', 'message' => 'Подождите немного...')
));
'#type'=>'select',
'#title'=>'Список 2',
'#options'=>ahah_get_list(0),
'#default_value'=>0
);
'#type'=>'submit',
'#value'=>'Отправить'
);
return
$form;}
function
ahah_ahah_submit($form,&$form_state){drupal_set_message($form_state['values']['s1'].'-'.$form_state['values']['s2']);
}
?>
Надеюсь другим поможет как и мне. Спасибо RxB.