【问题标题】:Rendering form via Ajax - Symfony 5通过 Ajax 渲染表单 - Symfony 5
【发布时间】:2022-01-05 02:58:48
【问题描述】:
直到 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 尝试了所有可能的组合,但没有成功。有什么诀窍?
【问题讨论】:
标签:
ajax
forms
symfony
symfony5
【解决方案1】:
试试
return new JsonResponse(['view' => $this->render('path/to_view.html.twig')->getContent()]);
它将向您的 Ajax 调用返回一个 json 响应。您可以访问包含页面渲染 [$this->render()->getContent] 的 html 内容的“查看”键(根据需要命名)。这是我在 Symfony 5.4 项目中使用的方式。
【解决方案2】:
您好,您可以这样渲染表单
public function __invoke()
{
return $this->render('my/template.html.twig', [
'form' => $form->createView()
]);
}
注意:
render() -> 将返回响应对象
renderView() -> 将返回字符串(渲染的树枝模板)