AnswerBun.com

Ajax callback does not replace the form but add a new field

Drupal Answers Asked by billyJoe on January 6, 2022

I use his code to populate a select after giving à zipcode.

$form['responsible']['zipcode'] = array(
      '#type'               => 'textfield',
      '#title'              => t('Zipcode'),
      '#default_value'      => empty($account->Dossier->responsable->adresse->codePostal) ? Null : $account->Dossier->responsable->adresse->codePostal,
      '#required'           => True,
      '#maxlength'          => 5,
      '#ajax' => array(
        'callback' => 'ajax_get_cities_callback',
        'wrapper' => 'edit-city',
        'method' => 'replace',
      ),
    );

    $form['responsible']['city'] = array(
      '#type'               => 'select',
      '#title'              => t('City'),
      '#options'            => array(),
      '#required'           => True,
    );

My callback

function ajax_get_cities_callback($form, $form_state){
  $client = new SoapClient('myWebservice',array("trace" => true,  "exceptions" => true,));
  $requestParams = array(
    'parameters' => array (
      'numSite' => 1058,
      'typeListes' => array(
        'RechercheTypeListe' => array(
          'typeListe' => 'LST_VILLE',
          'param1' => $form_state['values']['zipcode']
          )
        )
    )
  );
  $dataresponse->requestParams = $requestParams;
  $response = "";
  try {
      $response = $client->__Call('GetListes',$requestParams);
  }
  catch (Exception $e) {
    var_dump($e);
    return False;
  }

  $form['responsible']['city']['#options'] = array(
    0 => "aaaa",
    1 => "test2",
    2 => "test3"
  );

  return $form['responsible']['city'];

}

When I give a zipcode, a new select is created behind the first one.( picture here: https://www.uploady.com/#!/download/zjKvglzRTSe/ZIMYkjSAAaLrUFUq)
I tried to return only $form[‘responsible’][‘city’][‘#options’] but it does not fixe.

Any idea ?

Thank you

One Answer

You have to setup a wrapper on the field you want to update :

$form['responsible']['zipcode'] = array(
      '#type'               => 'textfield',
      '#title'              => t('Zipcode'),
      '#default_value'      => empty($account->Dossier->responsable->adresse->codePostal) 
                                    ? Null 
                                    : $account->Dossier->responsable->adresse->codePostal,
      '#required'           => True,
      '#maxlength'          => 5,
      '#ajax' => array(
        'callback' => 'ajax_get_cities_callback',
        'wrapper' => 'div_city_wrapper', // Changed here
        'method' => 'replace',
      ),
    );

    $form['responsible']['city'] = array(
      '#type'               => 'select',
      '#title'              => t('City'),
      '#options'            => array(),
      '#required'           => True,
      '#prefix'           => '<div id="div_city_wrapper">', // Added this
      '#suffix'           => '</div>', // Added this
    );

The callback function seems to be fine as it returns the wrapped form element ($form['responsible']['city'])

Answered by yilmi on January 6, 2022

Add your own answers!

Related Questions

Node is not created, but nid is returned

2  Asked on December 26, 2021 by ziobudda

   

EntityDrupalWrapper->value() causes infinite recursion on user login?

1  Asked on December 24, 2021 by tigertrussell

   

Feed import breaks due to ajax error

1  Asked on December 24, 2021 by kenpeter

 

Multi site Image cache issue

0  Asked on December 24, 2021 by user99683

   

How to make relationships between users

1  Asked on December 22, 2021

   

Need CKEditor to encode special characters

1  Asked on December 22, 2021 by bemarlan

   

Checkboxes in a simple form are not displayed

1  Asked on December 22, 2021 by sebish

   

How to change scheduler date format in *_node_form

1  Asked on December 21, 2021 by oskar-calvo

   

hiding taxonomy terms on term page

1  Asked on December 21, 2021 by user3027413

   

TypeError on “drush config-export”

1  Asked on December 21, 2021

     

“Broken pipe” between Nginx and PHP-FPM

1  Asked on December 21, 2021 by stephen-winnall

 

Restrict delete operation on a node referenced by another node

2  Asked on December 19, 2021 by user48552

   

How to perform views date calculations using global math?

2  Asked on December 19, 2021 by tinohuda

   

Get menu link siblings

4  Asked on December 19, 2021 by erin-mclaughlin

 

Ask a Question

Get help from others!

© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP