Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony编辑表格dosen';行不通_Php_Forms_Symfony_Submit_Edit - Fatal编程技术网

Php Symfony编辑表格dosen';行不通

Php Symfony编辑表格dosen';行不通,php,forms,symfony,submit,edit,Php,Forms,Symfony,Submit,Edit,我想用symfony表单编辑我的数据,但我遇到了一个问题 可能是我的控制器。我有一些是这样的: public function detailAction($id,Request $request) { $order = $this->getDoctrine()->getRepository(OrderMain::class)->find($id); if (!$order) { throw $this->notFoundExcepti

我想用symfony表单编辑我的数据,但我遇到了一个问题 可能是我的控制器。我有一些是这样的:

  public function detailAction($id,Request $request)
{
    $order = $this->getDoctrine()->getRepository(OrderMain::class)->find($id);

    if (!$order) {
        throw $this->notFoundException();
    }

    $form = $this->createForm(OrderMainType::class, $order);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
//            do not enter here
            $orderEdit = $form-getData();
            $em = $this->getDoctrine()->getManager();
            $em->persist($orderEdit);
            $em->flush();
        }

    return $this->render('ModiModiAdminBundle:Order:detail.html.twig',array(
        'form' => $form->createView(),
        ));
}


 public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
   /.../
 ->add('edit', SubmitType::class, array(
                                  'attr' =>array('class'=>'edit'),
            ));
    }

全部正确显示,但当我单击按钮时,我的页面将重新加载(不保存更改)。谢谢你的帮助

这是控制器方法的问题。下面应该适合你

public function detailAction($id,Request $request)
{
    $order = $this->getDoctrine()->getRepository(OrderMain::class)->find($id);

    if (!$order) {
        throw $this->notFoundException();
    }

    $form = $this->createForm(OrderMainType::class, $order);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
            //do not enter here
            $em = $this->getDoctrine()->getManager();
            $em->flush();
        }

    return $this->render('ModiModiAdminBundle:Order:detail.html.twig',array(
        'form' => $form->createView(),
        ));
}

您可以删除
$orderEdit=$form-getData()的行。提交表单时,应根据提交的数据更新实体。由于这已经是一个托管实体,您还可以删除
$em->persist($orderEdit)

这是控制器方法的问题。下面应该适合你

public function detailAction($id,Request $request)
{
    $order = $this->getDoctrine()->getRepository(OrderMain::class)->find($id);

    if (!$order) {
        throw $this->notFoundException();
    }

    $form = $this->createForm(OrderMainType::class, $order);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
            //do not enter here
            $em = $this->getDoctrine()->getManager();
            $em->flush();
        }

    return $this->render('ModiModiAdminBundle:Order:detail.html.twig',array(
        'form' => $form->createView(),
        ));
}
您可以删除
$orderEdit=$form-getData()的行。提交表单时,应根据提交的数据更新实体。由于这已经是一个托管实体,您还可以删除
$em->persist($orderEdit)

您缺少=>处理来自代码的请求 $form->handleRequest($request)

您缺少=>处理来自代码的请求
$form->handleRequest($request)

实体管理器不知道如何持久化表单数据,它只接受实体。尝试移交控制器中的
$order
实体,isvalid条件块中的实体应使用新的有效表单数据进行更新。它不起作用:(实体管理器不知道如何持久保存表单数据,它只接收实体。请尝试在控制器中移交
$order
实体,该实体在isvalid条件块中应使用新的有效表单数据进行更新。它不起作用:(可能是起作用的,但如果($form->isSubmitted(),请不要输入内部。)&&&$form->isValid())提交表单并生效后,“请勿输入”是什么意思?是,$form->isSubmitted()和$form->isValid()始终返回FALSE则问题最有可能出现在表单中。如果使用配置文件调试器,则应该能够看到发送的数据以及响应中的任何错误。可能这是有效的,但如果($form->isSubmitted()&&&$form->isValid())则不要输入内部“请勿输入”是什么意思表单提交并生效后?是,$form->isSubmitted()和$form->isValid()始终返回false,则问题最有可能出现在表单中。如果使用配置文件调试器,您应该能够看到发送的数据以及响应中的任何错误。