Почему форма корректировки данных пользователя при сохранении дает ошибку? Получил код ф

Главные вкладки

Аватар пользователя pingvin156 pingvin156 29 августа 2017 в 23:26

Получил код формы корректировки данных с помощью вот этого чудо-кода:

<?php
      $entity 
= \Drupal::entityTypeManager()->getStorage('user')->create(array());
      
$form $this->entityFormBuilder()->getForm($entity);
      
$txtBlock = \Drupal::service('renderer')->render($form);
?>

Далее вывожу его в блок. При нажатии на кнопку сохранить сайт пытается перейти на несуществующую страницу с безумным именем типа http://имя_сайта/form_action_p_pvdeGsVG5zNF_XLGPTvYSKCf43t8qZYSwcfZl2uzM

Кто знает, куда копать?

Комментарии

Аватар пользователя pingvin156 pingvin156 30 августа 2017 в 8:23

В hook_form_alter отловил переменную формы $form. В $form[#action] как раз присутствует такая строка "form_action_p_pvdeGsVG5zNF_XLGPTvYSKCf43t8qZYSwcfZl2uzM", куда отправляется пользователь после нажатия на кнопку "Сохранить", но мне нужно, чтобы выполнились функции в $form[#submit].
Как это сделать?
Подскажите, уже 3 дня бьюсь над этой проблемой

Аватар пользователя pingvin156 pingvin156 30 августа 2017 в 9:05

Заменил
$form = $this->entityFormBuilder()->getForm($entity);
на
$form = \Drupal::formBuilder()->getForm('Drupal\user\RegisterForm', $entity);

Вылет в ошибку.
В примере намек на форму регистрации. Я ее получал так:

<?php$entity = \Drupal::entityTypeManager()->getStorage('user')->create(array());
      $formObject = \Drupal::entityTypeManager()
          ->getFormObject('user', 'register')
          ->setEntity($entity);
      $form = \Drupal::formBuilder()->getForm($formObject);
      $txtBlock = \Drupal::service('renderer')->render($form);?>

Если дело в получении формы, то мб можно это перестроить, чтобы получить форму аккаунта?

Аватар пользователя pingvin156 pingvin156 30 августа 2017 в 18:38

Не понял)
Я сделал так:

<?php$entity = \Drupal::entityTypeManager()->getStorage('user')->create(array());
      $formObject = \Drupal::entityTypeManager()
          ->getFormObject('user', 'default')
          ->setEntity($entity);
      $form = \Drupal::formBuilder()->getForm($formObject);
      //$form = $this->entityFormBuilder()->getForm($entity);
      $txtBlock = \Drupal::service('renderer')->render($form);?>

Тот же самый эффект, что и с моим кодом. У меня подозрение, что дело не в этом куске кода...

Аватар пользователя gun_dose gun_dose 30 августа 2017 в 9:14

Восьмёрка кидает на такие страницы, если в процессе обработки формы что-то пошло не так. Смотрите логи, причём скорее всего не журнал, а логи сервера.