#ajax не работает в поле формы, добавленном при обратном вызове ajax - PullRequest
0 голосов
/ 10 января 2019

Я создал форму, используя Drupal 8 API. Я могу добавить поле динамически с помощью AJAX при нажатии на кнопку-переключатель. Это поле имеет собственную функцию #ajax, но оно не работает при нажатии, я даже не получаю обычного сообщения «Пожалуйста, подождите».

public function buildForm(array $form, FormStateInterface $form_state) {
    ...
    $form['meeting']['existing']['replace_facilitator'] = [
        '#type' => 'container',
        '#id' => 'replace-facilitator-container',
    ];

    $form['meeting']['existing']['replace_facilitator']['options'] = [
        '#type' => 'checkbox',
        '#title' => $this->t('Are you replacing a facilitator?'),
        '#ajax' => [
            'callback' => '::replaceFacilitatorCallback',
            'wrapper' => 'facilitator-container',
            'effect' => 'fade',
        ],
    ];
    ...
}

Это функция обратного вызова, которая возвращает поле.

public function searchMeetingCallback(array &$form, FormStateInterface 
    $form_state) : AjaxResponse {

    $response = new AjaxResponse();
    $renderer = \Drupal::service('renderer');

    ...

    $response->addCommand(new ReplaceCommand('#replace-facilitator-container', 
    $renderer->renderRoot($form['meeting']['existing']['replace_facilitator'])));

    ...

    return $response;

}

В этом примере вы можете видеть, что поле формы находится внутри функции buildForm, поэтому элемент отображается правильно.

Я не просто возвращаю элемент массива рендеринга, потому что я делаю некоторые проверки и возвращаю некоторую команду оповещения.

Нужно ли повторно привязывать метод on jQuery?

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