重新验证表单 Symfony 3 [关闭]

Posted

技术标签:

【中文标题】重新验证表单 Symfony 3 [关闭]【英文标题】:Revalidate the form Symfony 3 [closed] 【发布时间】:2019-03-28 05:26:19 【问题描述】:

在一行中,如何手动再次验证表单?

如果提交了表单,我需要在 handleRequest() 之后修改表单的对象。

但是,如果我检查表单 isValid() 是否总是错误的。

我认为有效性是在handleRequest()中检查,但我需要在修改对象形式后再次检查。

public function showAction(Request $request, Phrase $phrase = null) 
    ...
    $game = $gameService->getGame($phrase); // Récupération d'une partie
    $form = $this->createForm(GameType::class, $game);

    $form->handleRequest($request);
    if($form->isSubmitted() && $form->isValid()) 
        ...
    
    ...

【问题讨论】:

请用英文? [解释他为什么要翻译]@Alexdu98 Le site est en anglais。 Le but du site est de permettre à ta réponse d'aider d'autres personnes, tu peux réussir a traduire tout ca? tu n'es pas obligé d'ajouter autant de contexte。 C'est souvent mieuvent mieux de réduire le questione a ses aspect techniques。 好吧对不起,这是我的第一篇文章。在一行中,如何手动再次验证表单?如果提交了表单,我需要在 handleRequest() 之后修改表单的对象。但是,如果我检查表单 isValid() 是否总是错误的。我认为有效性是在handleRequest()中检查但我需要在修改对象表单后再次检查。 你最好删除这个问题并重新开始一个新鲜而清晰的问题。当然是英文... ;) 【参考方案1】:

无需“重新验证”表单。改变逻辑(算法)。

试试这个:

\GET(用户请求游戏)

创建一个新的“游戏”并将其传递给视图。

\POST(用户提交答案)

验证表单 (handleRequest)。

如果没问题 ($form->isSubmitted() && $form->isValid()) 创建一个新的“游戏”并将其传递给视图。 否则表单(因表单错误而无效)和原始“游戏”将传递给视图

目标是只在

上生成一个新的“游戏”(实体+表单) \GET 请求 \POST 如果表单有效

实际上,您在每次请求时都会生成它。

【讨论】:

感谢您的回复。

以上是关于重新验证表单 Symfony 3 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 2.3 使用 handleRequest 验证表单非常慢

Symfony 表单验证:如果另一个字段不为空,则需要字段

直接访问登录表单时未设置会话 cookie,导致 CSRF 令牌无效

Windows 安装 Symfony 2.2 框架 - 安装成功 !!

带有新身份验证方法的 Symfony 简单登录表单不起作用

Symfony2:使用 FOSUserBundle 时如何在控制器内获取用户对象?