Функция AJAX в Drupal 6 не работает - PullRequest
0 голосов
/ 20 сентября 2011

Мне нужно отфильтровать поле территории по значению поля региона im, используя функцию ajax, как это упоминалось в приведенном ниже коде, но это не работает. AJAX CALL на функции не входит в функцию 'Terre_filter_callback', так или иначе, будет знать, где ошибка?

            function form_search_menu() {

             $items['form/search'] = array(
             'title' => t('Search'),
             'page callback' => 'drupal_get_form',
             'page arguments' => array('_search'),
             'access callback' => TRUE,
             'description' => t('search'),
               );
            return $items;
              }

         function _search(&$form_state) {
         drupal_add_js(drupal_get_path('module', 'form_search')    .'/script.js');
           $form['description'] = array(
           '#type' => 'item',
           '#title' => t('Search page'),
                );



       //FILL THE LIST OF REGIONS
         $conn = oci_connect('webuser', 'website',    '172.16.1.1');

        //regions
      $stid = oci_parse($conn, "SELECt  code,descr1 FROM    table1.region");
   oci_execute($stid);
    $cidades = array();         while (($row = oci_fetch_array($stid,    OCI_ASSOC))) {
            $cidades[$row['CODE']]= $row['DESCR1'];
                                }       $cidades ['']='Select';

        //city
        $stid1 = oci_parse($conn, "SELECT code,descr1 from    table1.city ORDER BY      DESCR1");   oci_execute($stid1);    $types =    array();        while (($row = oci_fetch_array($stid1, OCI_ASSOC))) {
            $types [$row['CODE']]= $row['DESCR1'];
                                }           $types['']='Select';
  //territory
   $stid2 = oci_parse($conn, "SELECT code,descr1 FROM    table1.territory");      oci_execute($stid2);
    $territory = array();
      while (($row = oci_fetch_array($stid2, OCI_ASSOC))) {
             $territory [$row['CODE']]= $row['DESCR1'];
                                }
         $territory ['']='Select';


   oci_free_statement($stid);
   oci_close($conn);


$form['name'] = array(
  '#type' => 'fieldset',
  //'#title' => t('Name'),
  // Make the fieldset collapsible.
  '#collapsible' => false, // Added
  '#collapsed' => FALSE,  // Added
  ); 

  $form['name']['Region'] = array(
 '#type' => 'select',
 '#title' => t('Region'),
 '#options' => $cidades,  
 '#required' => FALSE,    '#default_value' =>    isset($form_state['values']['name']['Region']) ? $form_state     ['values']['name']['Region'] : '',
       '#ajax' => array(
          'event' => 'change',
         'callback' => 'territory_filter_callback', 
          'wrapper' => 'dropdown_second_replace'
     ),
  // Added
     );

 $form['name']['Territory'] = array(
  '#type' => 'select',
   '#title' => t('Territory'),      '#prefix' => '<div    id="dropdown_second_replace">',   '#suffix' => '</div>',  
    '#options' => $territory,
     '#required' => FALSE,  '#default_value' =>    isset($form_state['values']['name']['Territory']) ?             $form_state['values']['name']['Territory'] : '',

       // Added    );

    $form['name']['City'] = array(
    '#type' => 'select',
      '#title' => t('City'),
       '#options' => $types,
     '#required' => FALSE,
   // Added
 );

 $form['link'] = array(
 '#type' => 'markup',
 '#value' => '<a href="#" onclick="navigate()" ><input    type="button"  value="Search"         style="background-color:#2A64A9;color:#FFFFFF;width:80px;    height:25px;         border:1;CURSOR:POINTER;float:right;border-color:#FFFFFF;" ></a>', //



  return $form;
 }

   function territory_filter_callback(&$form,&$form_state)
{
$territory_options=array();
   if(isset($form['name']['Region']['#default_value']['0'])
{   $Region=$form['name']['Region']['#default_value']['0'];
}
else
  {     $Region=0;
   }


   $territory_options=selected_territory($Region);
   $form['name']['Region']['#ajax']=
   array('event' => 'change',
    'wrapper' => 'territory_wrapper',
   'callback' => 'filter_territory_callback',
   'method' =>replace,
   );
   $form ['name']['territory']['prefix']='<div    id="territory_wrapper">';
      $form ['name']['territory']['prefix']='</div>';
       $form ['territory']['#options']=$territory_options;

  }

  function filter_territory_callback($form,$form_state)
 {
    $Region=$form['name']['Region']['#value'];
$form['name']['territory']['#options']=selected_territory($Region);
return $form['territory'];
  }

1 Ответ

0 голосов
/ 21 сентября 2011

drupal 6 не поддерживает '#ajax' ... '# ajax' работает с drupal 7 ... в drupal 6 вы можете использовать '# ahah'

http://drupal.org/node/331941

удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...