Drupal 8: Программный вывод EForm

Небольшая заметка о том, как выводить EForm (entityform из Drupal 7) программным способом, где это необходимо.

29.08.2016
2 комментария
0 мин.

Entityform под Drupal 8 теперь называется EForm и, как ни странно, программный вывод отличается от подхода в 7-ке. Это небольшая заметка о том как выводить EForm программно.

Программный вывод EForm contact_form
$eform_type = EFormType::load('contact_form');
$eform_submit = new EFormSubmissionController();
$form = $eform_submit->submitPage($eform_type);

В $form будет находиться render array с формой. Далее, в зависимости от ситуации, вы либо сразу отдаете его, либо рендерите через render() .

Drupal
Drupal 8
EForm

Комментарии

drupby   пн, 29/08/2016 - 19:41

Зачем нужен модуль, если для этих целей имеется сервис entity.form_builder? Смотри пример в контроллере https://api.drupal.org/api/drupal/core!modules!contact!src!Controller!ContactController.php/class/ContactController/8.2.x

Niklan   вт, 30/08/2016 - 08:42

Тоже пока не вьехал. Он к тому же ещё и люто багает. По сути то да, Contact стал аналогом Entityform в ядре. Единственное отличие по всей видимости в том, что EForm хранит все отправления на сайте. Также у EForm можно прямо в админке разрулить кому можно заполнять форму, переопределение сообщений об успешном отправлении и кнопки отправить, возможность запоминать заполнение юзером, чтобы при следующем разе все данные подгрузились если форма не была отправлена. Отсюда же вытекает то что можно запретить отправлять более 1 раза и показывать своё предыдущее оправление и с возможностью поправить его.

Все кроме сохранения отправлений на сайте на самом то деле не нужно. Хотя сообщение об успешном отправлении я юзал, удобненько без альтеров всё.