【问题标题】:How can I define an undefined method named "handleRequest" of class in Symfony 4?如何在 Symfony 4 中定义一个名为“handleRequest”的类的未定义方法?
【发布时间】:2018-09-05 07:52:26
【问题描述】:
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”。

【问题讨论】:

    标签: forms symfony oop


    【解决方案1】:

    您在这里调用了错误对象的方法。请注意,您调用的是 $this->createFormBuilder(),它返回的是 FormBuilder,而不是表单。

    我的建议是像这样命名变量:

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

    然后,您不会在表单构建器上存储getForm() 调用的结果。你应该这样做:

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

    ...这样您将获得一个具有handleRequest() 方法的Form 实例,并且对其的调用将产生您期望的结果。

    【讨论】:

    • P.S.另请注意,您在方法的第 4 行覆盖了 $item var。这可能是一个错误。
    • 我按照你的建议更新了我的代码:textuploader.com/d2bzn 但它是同样的错误信息
    • 如果我编写静态代码,那么一切正常textuploader.com/d2bz8
    • 使用getForm()方法获取表单实例。例如。首先通过构建器添加您的字段,然后调用$form = $formBuilder->getForm()
    • 是的,您链接到的第二个实现应该是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多