如何在 Symfony2 中更改返回渲染方向

问题描述 投票:0回答:1

我在 symfony 中渲染表单时遇到问题。

我使用商业模板(SmartAdmin),该模板使用 AJAX 来捕获加载的所有 url,当 url 提供“#”时保留菜单和配置

通常我可以正常工作,但是在这个控制器中,当验证失败时我遇到问题

public function createAction(Request $request)
    {
        $entity = new Clientes();
        $form = $this->createCreateForm($entity);
        $form->handleRequest($request);

        if ($form->isValid()) {
            $em = $this->getDoctrine()->getManager();
            $em->persist($entity);
            $em->flush();

            $url=$this->generateUrl('ec_main_cliente', array('idcliente' => $entity->getId()));
            $url = str_replace('cliente', '#cliente', $url);

            return $this->redirect($url);
        }



        return $this->render('ECMainBundle:Clientes:nuevo_cliente.html.twig', array(
                'entity' => $entity,
                'form'   => $form->createView(),
            ));
    }

当 Form 无效时,加载不带“#”的“ECMainBundle:Clientes:nuevo_cliente.html.twig”,并丢失所有菜单和配置。

请问有什么建议吗?

提前致谢,抱歉我的英语不好

图像工作正常: enter image description here

问题图片: Image of the problem

php forms symfony validation
1个回答
0
投票

我仍然没有完全理解您想要实现的目标,但我认为您希望重定向始终发生。在这种情况下,您应该稍微重组您的代码:

$id = 0;

if ($form->isValid()) {
    $em = $this->getDoctrine()->getManager();
    $em->persist($entity);
    $em->flush();
    $id = $entity->getId();
}

$url = $this->generateUrl('ec_main_cliente', array('idcliente' => $id));
$url = str_replace('cliente', '#cliente', $url);

return $this->redirect($url);

那么,当然,模板渲染的最后一部分将永远不会被执行。

© www.soinside.com 2019 - 2024. All rights reserved.