如何在SF2控制器中创建操作后重定向

时间:2013-03-24 15:52:55

标签: redirect symfony routing routes

以下是无法正常工作的操作,实体已创建,但我总是渲染AileronsFrontendBundle:默认值:observation.html.twig

如代码所示,此createAction应呈现我的主页模板,但模板呈现效果不佳。

 /**
 * Creates a new Observation entity.
 *
 * @Route("/observation/new", name="observation_create")
 * @Method("POST")
 * @Template("AileronsFrontendBundle:Default:observation.html.twig")
 */
public function createAction(Request $request) {
    $entity = new Observation();
    $form = $this->createForm(new ObservationType(), $entity);
    $form->bind($request);


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

        $msg = array(
            'type'=>'success',
            'title'=>'Merci !',
            'text'=>'Votre observation à bien été enregistré, merci pour votre participation !',
        );
        $this->redirect($this->generateUrl('home', array('msg'=>$msg)));
    }

    return array(
        'entity' => $entity,
        'form' => $form->createView(),
    );

注意重定向我试过这个:

$this->render('AileronsFrontendBundle:Default:index.html.twig', array('msg'=>$msg));

它也不起作用。

这是我的索引动作

/**
 * @Route("/", name="home")
 * @Template()
 */
public function indexAction() {
    return array();
}

1 个答案:

答案 0 :(得分:1)

您需要返回您的重定向。

return $this->redirect($this->generateUrl('home', array('msg'=>$msg)));

操作始终需要返回响应对象。 返回渲染的Twig文件的示例:

return $this->render('AcmeTestBundle:Test:test.html.twig', array());