I want to rebuild a Form Item with new property after Ajax triggered on page, I try following codes
<?php
use Drupal\Core\Form\FormStateInterface;
use Symfony\Component\HttpFoundation\Request;
function MYMODULE_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if ($form_id == 'node_trends_form' || $form_id == 'node_trends_edit_form') {
$form['langcode']['widget'][0]['value']['#ajax'] = array(
'callback' => 'MYMODULE_language_change',
'wrapper' =>'edit-field-trends-wrapper',
'event' => 'change',
);
$form['field_trends']['widget'][0]['value']['#autocomplete_route_parameters'] = array('lang'=>'test');
$form['field_trends']['#prefix'] = '<div id="edit-field-trends-wrapper">';
$form['field_trends']['#suffix'] = '</div>';
}
}
/**
* Ajax callback.
*/
function MYMODULE_language_change(array $form, FormStateInterface $form_state) {
$form_state->setRebuild(TRUE);
$form['field_trends']['widget'][0]['value']['#title'] = "New Title After Ajax";
$form['field_trends']['widget'][0]['value']['#autocomplete_route_parameters'] = array('lang'=>'onajax');
return $form['field_trends'];
}
Update : in order to find the problem I change the code to simplest manner,
The Problem is when ajax triggered autocomplete replaced but changing on #autocomplete_route_parameters
to applied !!!
Update 2 Strange things is I try to change field title on ajax callback handler it applied and after ajax new title is New Title After Ajax but autocomplete parameters not changed. I confused 😔😔
#autocomplete_route_parameters
of autocomplete field. it's not related to html markups