Drupal 8. Form. Ajax Api

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

Аватар пользователя symbians60v5 symbians60v5 13 июня 2019 в 16:18
1

Всем привет. Подскажите плиз. Пытаюсь запустить ajax при работе с формами. В кастомный блок выгружаю форму создания ноды. Далее в form_alter пытаюсь вызвать ajax при изменении значения на форме. Но. Каждый раз когда я меняю значение я получаю ошибку TypeError: Argument 1 passed to Drupal\Core\Field\WidgetBase::massageFormValues() must be of the type array, null given,

Которае отсылает меня на на вот эту строку return \Drupal::formBuilder()->getForm($form); (функция build). Помогите плиз разобраться как работать с ajax.

<?php
  
public function build() {
    
$values = array('type' => 'agency_call');

    

$node = \Drupal::entityTypeManager()
      ->
getStorage('node')
      ->
create($values);

    

$form = \Drupal::entityTypeManager()
      ->
getFormObject('node''create')
      ->
setEntity($node);
    return \
Drupal::formBuilder()->getForm($form);
  }

function 

wa_advice_form_alter(&$form,$form_state$form_id) {
    
kint($form['field_what_genre_do_you_write_']['widget']);
    
$form['field_what_genre_do_you_write_']['widget']['#ajax'] = [
      
'event' => 'change',
      
'callback' => 'wa_advice_form_ajax',
    ];

    

$form['debug'] = [
      
'#type' => 'container',
      
'#attributes' => [
        
'id' => ['debug-out'],
      ],
    ];
  }
}

function 

wa_advice_form_ajax(array &$formFormStateInterface $form_state):AjaxResponse{
  
$response = new AjaxResponse();
  
$debugOut = @Kint::dump($form_state);
  
$response->addCommand(new ReplaceCommand('#debug-out'$debugOut ));
  return 
$response;
}
?>

Комментарии