Ajax 无法在 drupal 8 自定义表单中工作

Ajax not working in drupal 8 custom form

我正在尝试在 drupal 8 自定义表单中使用 ajax。但是不行。

我有自定义表单,一旦用户单击复选框,其中的文本字段就会显示一些值。这是我的代码:-

public function buildForm(array $form, FormStateInterface $form_state) {

$form['del_name'] = array(
    '#type' => 'checkbox',
    '#title' => $this->t('Delete users, by name'),
        '#ajax' => array(
      'callback' => array($this, 'my_user_callback'),
            'wrapper' => 'del-name',
        ),
  );

    $form['name_placeholder'] = array(
    '#type' => 'hidden',
    '#prefix' => '<div id="del-name">',
    '#suffix' => '</div>',
    '#tree' => TRUE,
  );

    if (!empty($form_state->getValue('del_name')) && $form_state->getValue('del_name')) {
   /*
   * $process_data = some stuff
   */   
     $form['name_placeholder']['user_role'] = array(
      '#title' => $this->t('Users role'),
      '#type' => 'textfield',
      '#default_value' => $process_data
    ); 
  }
}

function my_user_callback(array &$form, FormStateInterface $form_state) {
      return array(
       '#type' => 'ajax',
       '#commands' => array(
        ajax_command_replace('#del-name', render($form['name_placeholder'])),
        )
      );
  }

问题是,选中复选框时文本字段不出现。

试试这个:

use Drupal\Core\Ajax\AjaxResponse;
use Drupal\Core\Ajax\HtmlCommand;

function my_user_callback(array &$form, FormStateInterface $form_state {
  $response = new AjaxResponse();
  $response->addCommand(new HtmlCommand(
    '#wrapper-element-id',
    $array_of_form_elements
  ));
  return $response;
);