Как я могу определить неопределенный метод с именем «handleRequest» класса в Symfony 4? - PullRequest
0 голосов
/ 05 сентября 2018
use Symfony\Component\Form\Forms;

public function form($slug, Request $request){
  $id = $request->request->get('id');
  $EntityName = 'App\\Entity\\' . ucwords($slug);
  $item = new $EntityName();
  $item= $this->getDoctrine()->getRepository($EntityName)->find($id);
  $form = $this->createFormBuilder($item);

  foreach ($classes->fieldMappings as $fieldMapping) {
    $form = $form->add($fieldMapping['fieldName'], TextType::class, array('attr' => array('class' => 'form-control')));
  }
  $form->add('cancel', ButtonType::class, array('label' => 'Abbrechen','attr' => array('class' => 'cancel form-btn btn btn-default pull-right close_sidebar close_h')))
  ->add('save', SubmitType::class, array('label' => 'Speichern','attr' => array('id' => 'submit-my-beautiful-form','class' => 'form-btn btn btn-info pull-right','style' => 'margin-right:5px')))
  ->getForm();

  $form->handleRequest($request);
}

Попытка вызова неопределенного метода с именем handleRequest класса "Symfony \ Component \ Form \ FormBuilder".

1 Ответ

0 голосов
/ 05 сентября 2018

Вы вызываете метод на неправильном объекте здесь. Обратите внимание, что вы звоните $this->createFormBuilder(), который возвращает FormBuilder, а не форму.

То, что я хотел бы предложить, это назвать переменную следующим образом:

$formBuilder = $this->createFormBuilder($item);

И затем вы не сохраняете результат вызова getForm() в конструкторе форм. Вы должны сделать это:

foreach (...) {
  $formBuilder->add(...);
}

$formBuilder
  ->add(...)
  ->add(...)

$form = $formBuilder->getForm();

... и таким образом вы получите экземпляр Form, который имеет метод handleRequest(), и вызов его даст ожидаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...