Php 如何确认在没有JS的情况下删除Symfony 3.4中表格提交的实体?

Php 如何确认在没有JS的情况下删除Symfony 3.4中表格提交的实体?,php,forms,symfony,Php,Forms,Symfony,我正在使用Symfony 3.4中的一个简单表单,它允许在表单中选择任意数量的实体进行删除 要求用户确认删除而不使用JS的最佳/正确方法是什么? class SomeController { public function deleteUsersAction(Request request) { $users = $this->loadUsersFromDB(); $form = $this->creatFormBuilder

我正在使用
Symfony 3.4
中的一个简单表单,它允许在表单中选择任意数量的实体进行删除

要求用户确认删除而不使用JS的最佳/正确方法是什么?

class SomeController {
    public function deleteUsersAction(Request request) {
        $users = $this->loadUsersFromDB();        

        $form = $this->creatFormBuilder()
            ->add('users', EntityType::class, [
                'class' => 'AppBundle:User',
                'choices' => $users,             
                'multiple' => true,
                'expanded' => true,
            ])
            ->getForm();

         $form->handleRequest($request);
         if ($form->isSubmitted() && $form->isValid()) {
             $users = $form->getData();

             // Add confirmation here...

             $this->deleteUsers($user);
         }

         return $this->render('AppBundle::user_list.html.twig', ['form' => $form->createView()]);
    }
}

当然,我可以使用一些JS(或其他脚本代码)截取表单提交,显示确认对话框,然后将数据提交给处理表单和删除的控制器

然而,这不是我正在寻找的解决方案。如果可以删除,则必须首先检查提交的实体/用户。所以,控制器应该检查实体,然后将用户发送到确认页面

如何将所选实体传递到确认页面,然后最终传递到处理删除的控制器?

class SomeController {
    public function deleteUsersAction(Request request) {
        $users = $this->loadUsersFromDB();        

        $form = $this->creatFormBuilder()
            ->add('users', EntityType::class, [
                'class' => 'AppBundle:User',
                'choices' => $users,             
                'multiple' => true,
                'expanded' => true,
            ])
            ->getForm();

         $form->handleRequest($request);
         if ($form->isSubmitted() && $form->isValid()) {
             $users = $form->getData();

             // Add confirmation here...

             $this->deleteUsers($user);
         }

         return $this->render('AppBundle::user_list.html.twig', ['form' => $form->createView()]);
    }
}
我的第一个意图是为确认页面创建一个表单,该表单可以为所选实体保存
输入隐藏的
字段。但是,
隐藏的
字段不能存储实体(或者可以存储实体),我需要创建一个自定义表单类型来处理转换(实体到id->id到实体),或者在控制器内手动执行转换

第二种猜测是像以前一样使用
EntityType
,但只是使用CSS隐藏表单字段。然而,这些似乎不是一个干净的解决方案


我发现一些较旧的帖子建议使用自定义表单类型。这仍然是Symfony 3中的最佳选项吗?

创建一个删除的用户ID(或名称,等等)数组

然后,您可以创建一个警报框或其他一些div,其中包含您希望显示的信息


希望这有帮助!:-)

我建议您为删除和删除确认设置单独的路径(单一责任)。然后,从删除路径,将必须删除的实体的ID列表传递到删除确认路径。
检查此问题以了解更多详细信息:

谢谢,但这样会删除用户和已删除用户ID的列表。所以实际上没有确认,是吗?