Clase de formulario personalizado compatible con Ajax
Crea un formulario personalizado que utiliza Ajax para actualizar parte del formulario (un contenedor) cada vez que cambia el valor del campo de texto.
Clase de formulario personalizado compatible con Ajax
/** * Provides an example AJAX form. */ namespaceDrupal\my_module\Form; useDrupal\Core\Form\FormBase; useDrupal\Core\Form\FormStateInterface; useDrupal\Core\Ajax\AjaxResponse; useDrupal\Core\Ajax\HtmlCommand;
classAjaxExampleFormextendsFormBase { /** * {@inheritdoc} */ public function getFormId(): string { return'ajax_example_form'; }
/** * Ajax callback to update the result container. */ public function ajaxCallback(array &$form, FormStateInterface $form_state): AjaxResponse { $response = new AjaxResponse(); $value = $form_state->getValue('example_text'); $response->addCommand(new HtmlCommand('#result-wrapper', $this->t('You typed: @value', ['@value' => $value]))); return $response; }
/** * {@inheritdoc} (No submission processing required.) */ public function submitForm(array &$form, FormStateInterface $form_state): void { } }
Creación de una clase de comando Ajax personalizada
Define una clase de comando Ajax personalizado que implementa CommandInterface de Drupal. El comando devuelve una estructura JSON con un mensaje personalizado.
Creación de una clase de comando Ajax personalizada
/** * Defines a custom Ajax command. */ namespaceDrupal\my_module\Ajax; useDrupal\Core\Ajax\CommandInterface;
classCustomCommandimplementsCommandInterface { /** * The message to display. */ protectedstring$message;
/** * Constructs a CustomCommand object. */ public function __construct(string$message) { $this->$message = $message; }
/** * {@inheritdoc} */ public function render(): array { return [ 'command' => 'customCommand', 'message' => $this->$message, ]; } }
Formulario de carga dinámica de contenidos («Cargar más»)
Formulario personalizado que muestra una lista de elementos y un botón «Cargar más». Cuando se hace clic en el botón, un callback Ajax añade nuevos elementos a la lista de forma dinámica sin necesidad de recargar toda la página.
Formulario de carga dinámica de contenidos («Cargar más»)
/** * Load More Form using AJAX. */ namespaceDrupal\my_module\Form;