Проблема с exposed filter появление полей по условию?

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

Аватар пользователя sergei3456 sergei3456 24 июля 2011 в 20:52

Не знаю с какой стороны подойти.
Нужно сделать select при выборе определенного значения чтобы появлялось текстовое поле
Например в select выбрано 2х местный номер соответственно показывается поле exposed filter для 2х местного номера.
Условия выбора построил, сделал на ajax, но как его привязать к определенному views и вывести в блоке не знаю?
Вот код:


<?php
// $Id$

function search_hotels_menu(){
  
$items = array();

  

// Generate a changing number of checkboxes.
  
$items['search-hotels'] = array(
    
'title' => 'Поиск гостиницы',
    
'page callback' => 'drupal_get_form',
    
'page arguments' => array('ajax_search_hotels'),
    
'access callback' => TRUE,
    
'weight' => 1,
  );
  
  return 
$items;
}

function 

ajax_search_hotels($form, &$form_state) {
  
// Since the form builder is called after every AJAX request, we rebuild
  // the form based on $form_state.
  
$num = !empty($form_state['values']['howmany_select']) ? $form_state['values']['howmany_select'] : 0;

  

$form['howmany_select'] = array(
    
'#title' => t('Выберите тип номера.'),
    
'#type' => 'select',
    
'#options' => array(=> '-Выберите тип номера-'=> '2х местный номер'=> '3х местный номер'=> '4х местный номер'=> 'Полулюкс',=> 'Люкс'),
    
'#default_value' => $num,
    
'#ajax' => array(
    
'callback' => 'ajax_example_autotextfields_callback',
    
'wrapper' => 'textfields',
      
//'method' defaults to replaceWith, but valid values also include
      // append, prepend, before and after.
      // 'method' => 'replaceWith',
      // 'effect' defaults to none. Other valid values are 'fade' and 'slide'.
      // See ajax_example_autotextfields for an example of 'fade'.
    
'effect' => 'fade',
      
// 'speed' defaults to 'slow'. You can also use 'fast'
      // or a number of milliseconds for the animation to last.
      // 'speed' => 'slow',
      // Don't show any throbber...
    
'progress' => array('type' => 'node'),
    ),
  );
 
  
$form['#method'] = 'get';
 
  
$form['textfields'] = array(
    
'#prefix' => '<div id="textfields">',
    
'#suffix' => '</div>',
    
'#type' => 'fieldset',
  );

  
  switch(

$num){
      
    case 
1:
      
$form['textfields']['field_2nomer_value'] = array(
      
'#type' => 'textfield',
      
'#title' => t('2х местный номер'),
      
'#size' => '25',
    );
    break;
    
    case 
2:
      
$form['textfields']['field_3nomer_value'] = array(
      
'#type' => 'textfield',
      
'#title' => t('3х местный номер'),
      
'#size' => '25',
    );
    break;
    
    case 
3:
      
$form['textfields']['field_4nomer_value'] = array(
      
'#type' => 'textfield',
      
'#title' => t('4х местный номер'),
      
'#size' => '25',
    );
    break;
    
    case 
4:
      
$form['textfields']['field_polylux_value'] = array(
      
'#type' => 'textfield',
      
'#title' => t('Полулюкс'),
      
'#size' => '25',
    );
    break;
    
    case 
5:
      
$form['textfields']['field_lux_value'] = array(
      
'#type' => 'textfield',
      
'#title' => t('Люкс'),
      
'#size' => '25',
    );
    break;
    
    default:
'';
  }
 
 
$form['submit']['edit-submit-search'] = array(
      
'#type' => 'submit',
      
'#value' => t('Поиск'),
 );
  return 
$form;
}

function 

ajax_search_hotels_callback($form$form_state) {
  return 
$form['checkboxes_fieldset'];
}

?>