Forms 提交后如何清理值字段symfony表单

Forms 提交后如何清理值字段symfony表单,forms,symfony,field,symfony4,symfony-forms,Forms,Symfony,Field,Symfony4,Symfony Forms,我想在提交后清理Symfony表单的值字段,但我不知道怎么做 表格文件 <?php namespace App\Form; use App\Entity\Comment; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Co

我想在提交后清理Symfony表单的值字段,但我不知道怎么做

表格文件

<?php

namespace App\Form;

use App\Entity\Comment;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;

class CommentType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('text',TextareaType::class)
            ->add('visible',HiddenType::class)
            ->add('user',HiddenType::class)
            ->add('recipe',HiddenType::class)
            ->add('save', SubmitType::class, [
                'label' => "Comentar",
                'attr' => ['class' => 'save'],
            ]);
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Comment::class,
        ]);
    }
}

具体来说,我需要在提交后清理文本字段,但我不知道如何做。我也需要在提交后显示一个addFlash。在提交过程中不能错过它。我该怎么解决呢?

正如@Cerad所建议的,你应该试着更仔细地阅读文档。Symfony文档维护良好,易于谷歌搜索:

如果控制器扩展了Symfony的AbstractController,则可以使用快捷方式:

if($comment\u form->isSubmitted()&&$comment\u form->isValid()){
//…此处是您的表单提交逻辑
$this->addFlash('success','Comentario registration do con exito!Tu Comentario estarávisible una vez que el administrator lo revision');
//添加这一行,它将重定向到同一页,不包含post数据:
返回$this->redirectoroute('recipe_show',['title'=>'sometitle']);
}

这就是为什么文档在提交并成功处理表单后显示重定向。同样的文档也显示了使用flash消息功能。这是否回答了您的问题@Cerad你能告诉我URL文件在哪里吗。我没有看到这两种情况的例子together@FTW我试过了,但对我不起作用。我使用Symfony 4.4解决了。谢谢Cerad!我看到了,但我想当我重定向addFlash时,会错过。谢谢你,谢谢你。
/**
 * @Route("/receta/{title}", name="recipe_show", methods={"GET"})
 * @Route("/receta/{title}", name="recipe_show")
 */
public function show(Recipe $recipe,RecipeRepository $recipeRepository,CommentRepository $commentRepository, Request $request): Response
{ 
    $comment = new Comment();

    $comment_form = $this->createForm(CommentType::class, $comment);
    $comment_form->handleRequest($request);

    if ($comment_form->isSubmitted() && $comment_form->isValid()) {
        $comment->setVisible(0);
        $user = $this->getUser();
        $comment->setUser($user);
        $comment->setRecipe($recipe);
        $entityManager = $this->getDoctrine()->getManager();
        $entityManager->persist($comment);
        $entityManager->flush();  

        $this->addFlash('success', '¡Comentario registrado con exito! Tu comentario estará visible una vez que el administrador lo revise.');
        
 
    }

    $comments = $commentRepository->findCommentsByRecipe($recipe);
    

    return $this->render('recipe/show/show.html.twig', [
        'recipe' => $recipe,
        'comment_form' => $comment_form->createView(),
        'comments' => $comments
    ]);
}