1

正しく機能していないアクションは次のとおりです。エンティティは作成されますが、常にAileronsFrontendBundle:Default: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();
}
4

1 に答える 1

1

リダイレクトを返す必要があります。

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

アクションは常に応答オブジェクトを返す必要があります。レンダリングされたTwigファイルを返す例:

return $this->render('AcmeTestBundle:Test:test.html.twig', array());
于 2013-03-24T15:59:43.010 に答える