[РЕШЕНО]Добавление формы по клику

Главные вкладки

Аватар пользователя naTureX naTureX 5 апреля 2010 в 11:29

Есть форма выбора селект условно Форма 0

<?php
function test_form_form1() {
  
$options = array (
    
=> 'Value 1',
    
=> '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

Комментарии

Аватар пользователя naTureX naTureX 5 апреля 2010 в 12:09

Нашёл отличный модуль там со списком правда, но функционал аналогичный прилагаю исходный код

ahah.info
name = ahah
description = Example ahah
core = 6.x

********************************************************************
ahah.module

<?php
# 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(){

    

$n=$_POST['s1'];
    
$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=form_get_cache($form_build_id,$form_state);
    
$form['s2']=$form_element;
    
form_set_cache($form_build_id,$form,$form_state);

    

$form=form_builder('ahah_ahah',$form,$form_state);

    

$output=drupal_render($form['s2']);
    
drupal_json(array('status'=>'TRUE','data'=>$output));
    exit();
}

function 

ahah_ahah(&$form_state){

    

$form=array();
    
$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' => 'Подождите немного...')
         ));

    

$form['s2']=array(
        
'#type'=>'select',
        
'#title'=>'Список 2',
        
'#options'=>ahah_get_list(0),
        
'#default_value'=>0
    
);

    

$form['submit']=array(
        
'#type'=>'submit',
        
'#value'=>'Отправить'
        
);

  return 

$form;
}

function 

ahah_ahah_submit($form,&$form_state){
    
drupal_set_message($form_state['values']['s1'].'-'.$form_state['values']['s2']);
}
?>