通过 Ajax - Symfony 5 渲染表单

Rendering form via Ajax - Symfony 5

在 Symfony 4 之前,我曾经通过 Ajax 加载表单,返回如下内容:

$result = $this->renderView('my/template.html.twig',[
    'form' => $form->createView()
]);
return new Response($result);

从 Symfony 5 开始,这不再有效。我使用 $this->renderForm()$this->render()'form'=>$form 尝试了所有可能的组合,但没有成功。有什么诀窍?

您好,您可以像这样渲染表单

public function __invoke()
{
    return $this->render('my/template.html.twig', [
        'form' => $form->createView()
    ]);
}

注:

render() -> 将return响应对象

renderView() -> 将 return 字符串(渲染的树枝模板)

试试

return new JsonResponse(['view' => $this->render('path/to_view.html.twig')->getContent()]);

它将 return 对您的 Ajax 呼叫做出 json 响应。您可以访问 'view' 键(根据需要命名),其中包含页面呈现 [$this->render()->getContent] 的 html 内容。这是我在 Symfony 5.4 项目中使用的方式。