gpt4 book ai didi

php - 在 TWIG 中渲染 Controller 并显示表单错误

转载 作者:可可西里 更新时间:2023-10-31 22:41:56 25 4
gpt4 key购买 nike

我有 indexAction 和 contactAction

contactAction 是一个没有映射字段 (FormType) 的简单表单,如下所示:

/**
* @Route("/contact", name="contact")
* @Template()
* @param Request $request
* @return array
*/
public function contactAction(Request $request)
{
$form = $this->createForm(new ContactType());

$form->handleRequest($request);

if ($form->isValid()) {
$firstName = $form->get('first_name')->getData();
$lastName = $form->get('last_name')->getData();
$email = $form->get('email')->getData();
$message = $form->get('message')->getData();
}
return array(
'form' => $form->createView()
);
}

然后我使用此 TWIG 命令在我的 indexAction 中呈现此表单:

{{ render(controller('RusselBundle:Default:contact')) }}

一切正常,如果页面没有重新加载,HTML5 验证器工作正常,但如果表单有一些错误,如:firstName 长度,错误根本不显示,我该怎么做,以便在表单 indexAction 中显示错误?任何帮助,将不胜感激。我只是好奇这是可能的,如果 - 怎么样?对不起我的英语....

最佳答案

与其使用传递到操作中的请求,不如从请求堆栈中获取主请求。正如@DebreczeniAndrás 所说,当您使用 render(controller()) 时,您使用的是新创建的子请求,而不是实际传递给加载页面的请求(主请求)。

public function contactAction(Request $request)
{
$request = $this->get('request_stack')->getMasterRequest();

$form = $this->createForm(new ContactType());

//...
}

关于php - 在 TWIG 中渲染 Controller 并显示表单错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31468209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com