PIXMASTER

Cargando...

PIXMASTER

Renderizar formulario con twig – Drupal 8

1

Victoria

@victoria

Drupal - mayo 31, 2021

Una forma de entender el funcionamiento de los formularios en drupal es saber como se renderiza y se muestra en el front.

Una forma de entender el funcionamiento de los formularios en drupal es saber como se renderiza y se muestra en el front.

Si bien es cierto se puede hacer de varias formas, en este articulo enseñaremos una forma basica renderizando los elementos del formulario en una plantilla twig para que se pueda ententer de forma sencilla.

Empezamos creando nuestro módulo custom

Creación del módulo mymodule_form.info.yml:

type: module
name: mymodule_form
description: 'some description'
core: 8.x

A continuación creamos el archivo para definir la ruta de nuestro formulario.

Crear el archivo mymodule_form.routing.yml

mymodule_form.fields_form:
  path: 'mymodule-form'
  defaults:
    _title: 'mymodule_form'
    _form: '\Drupal\mymodule_form\Form\BuildingForm
  requirements:
    _permission: 'access content'

Debemos crear la ruta y el archivo para nuestro formulario

carpeta raíz del módulo así: /mymodule_form/src/Form/nombreForm.php

<?php
/**
 * @file
 * Contains \Drupal\mymodule_form\Form\BuildingForm.
 */
namespace Drupal\mymodule_form\Form;

use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Form\FormBase;

class BuildingForm extends FormBase {

    public function getFormId() {
        return ‘example_fields_form’;
    }

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

    public function submitForm(array &$form, FormStateInterface $form_state) {

    }

    public function validateForm(array &$form, FormStateInterface $form_state) {
        
    }
}

Hemos creado la estructura básica de nuestro formulario, si bien es cierto esta compuesto por varias funciones en esta ocasión nos centraremos solo en el buidForm() que es donde se declaran los elementos del formulario 

$form['mymodule_name'] = array(
  '#type' => 'textfield',
  '#placeholder' => t('Name'),
  '#size' => 60,
  '#maxlength' => 128,
  '#pattern' => 'some-prefix-[a-z]+',
  '#required' => TRUE,
);
$form['mymodule_email'] = array(
            '#type' => 'email',
            '#placeholder' => t('Email'),
            '#required' => TRUE,
);


$form['actions']['continue'] = array(
    '#type' => 'submit',
    '#value' => $this->t('continue'),
    '#attributes' => ['class' => ['act-continue']],
);
return $form;

Ahora indicamos que el formulario sera renderizado como un theme.

Creamos el archivo mymodule.module y agregamos la siguiente declaración

/**
 * Implements hook_theme().
 */
function mymodule_theme($existing, $type, $theme, $path) {
  return [
    'custom_form' => [
      'render element' => 'custom_form.html.twig',
    ],
  ];
}

Dentro del módulo se crea la carpeta templates y dentro crearemos nuestros archivo twig.

templates/custom_form.html.twig 

<article class="mymodule_form">
    <section>
      <div class="content">
        {{ form.nam }}
        {{ form.email }}
        {{ form.actions.continue }}
      </div>
    </section>
</article>

Categorías

Recomendamos

Wordpress - junio 16, 2021

Limite la longitud de los extractos

Normalmente, WordPress permite 55 palabras para un extracto. Pero puede resultar demasiado largo para un diseño medio. 

Read more...

0 Shares

Drupal - junio 14, 2021

Cómo obtener la URL de una imagen desde twig

A continuación mostraremos algunas formas de obtener la url de la imagen multimedia para poder utilizarla en las plantillas twig directamente

Read more...

0 Shares

Entretenimiento - octubre 28, 2020

9 Películas para ver en octubre

Este mes que se termina se estrena la última película de Aaron Sorkin, así como una película de acción post-Taken Liam Neeson.

Read more...

0 Shares

Internet - marzo 6, 2020

Cómo encontrar grandes libros en línea

Mientras que los libros físicos todavía tienen un atractivo saludable para algunos lectores, no siempre es una forma conveniente de consumir una historia.

Read more...

0 Shares