Отрисовка формы в шаблоне Twig в drupal8

Я сейчас использую drupal 8, и я создал форму, используя форму api,

Приведенный ниже код в каталоге модуля

  // module/src/Form/ContributeForm

  class ContributeForm extends FormBase {

  public function getFormId() {
     return 'amazing_forms_contribute_form';
  }

  public function buildForm(array $form, FormStateInterface $form_state) 
  {
      $form['title'] = array(
           '#type' => 'textfield',
           '#title' => t('Title'),
           '#required' => TRUE,
      );
      $form['video'] = array(
           '#type' => 'textfield',
           '#title' => t('Youtube video'),
      );
      $form['video'] = array(
          '#type' => 'textfield',
          '#title' => t('Youtube video'),
      );
     $form['develop'] = array(
          '#type' => 'checkbox',
          '#title' => t('I would like to be involved in developing this 
           material'),
    );
    $form['submit'] = array(
          '#type' => 'submit',
          '#value' => t('Submit'),
);
return $form;
}

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

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

Теперь мне нужно отобразить вышеупомянутые объекты в шаблоне веточки, как показано ниже.

 //themes/page.html.twig

 <body>
    {{form.title}}
    {{form.video}}
    {{form.video}}
 </body>

веточка будет в папке темы. Можно ли получить переменную в файле page.html.twig ??


person Manjunarth    schedule 08.12.2017    source источник


Ответы (2)


Лучший способ визуализировать и настроить вашу форму через Twig - использовать в ней значение $form['#theme']. Пример ниже:

имя_модуля / scr / Form / your_form.php

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

       $form['#theme'] = 'your_form_theme';

       return $form;
}

имя_модуля / form.module

function form_theme() {

    $themes['your_form_theme'] = ['render element' => 'form'];

    return $themes;
}

Осталось создать собственную ветку и вставить поля формы.

имя_модуля / templates / your-form-theme.html.twig

<body>
    {{form.field_1}}
    {{form.field_2}}
    {{form.field_3}}
 </body>

Надеюсь, это вам поможет!

person morbvel    schedule 02.02.2018
comment
как насчет токенов CSRF? - person Mohsin Saeed; 06.11.2019
comment
{{form.form_build_id}} {{form.form_token}} {{form.form_id}} {{form.actions}} - person Hoang Minh Dung; 22.11.2019

Вы можете создать страницу с помощью контроллера. Из этого вы можете получить элементы формы.

Создайте файл module_nameController.php внутри папки src / Controller. В этом файле создайте класс, который следует расширить до Controllerbase. В этом файле с помощью функции конструктора форм вы можете получить элементы формы.

person vignesh sureshbabu    schedule 28.04.2020