2012-01-26 11 views
8

Mam działanie indeksowe, które drukuje 1) formularz do tworzenia nowego obiektu; 2) wykaz wszystkich podmiotów:Osadzanie kontrolera formularza w szablonie twig: nie można przekierować we wbudowanym kontrolerze po przesłaniu

public function indexAction() 
{ 
    $em = $this->getDoctrine()->getEntityManager(); 

    $entities = $em->getRepository('MyBundle:Entity')->findAll(); 

    return array(
     'entities' => $entities, 
    ); 
} 

Gałązka:

{% block content %} 
    {% render "MyBundle:Entity:new" %} 
    {% render "MyBundle:Entity:list" %} 
{% endblock %} 

newAction w Entity Controller jest standart kontroler forma:

public function newAction() 
{ 
    $entity = new Entity(); 
    $form = $this->createForm(new EntityType(), $entity); 

    $request = $this->getRequest(); 
    if ($request->getMethod() == 'POST') { 
     $form->bindRequest($request); 

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

      // NOT WORK 
      return $this->redirect($this->generateUrl('entity_show', 
       array('id' => $entity->getId()))); 
     } 
    } 
    return array(
     'form' => $form->createView(), 
    ); 
} 

Przekierowanie po uporczywa jednostka nie działa, błąd:

An exception has been thrown during the rendering of a template 
("Error when rendering "http://example.com/app_dev.php/url/" 
(Status code is 302).") in MyBundle:Default:index.html.twig at line 2. 

Odpowiedz

3

Un na szczęście jest to zgodne z projektem. Nie można przekierowywać z wbudowanych kontrolerów. Aby obejść ten problem, można opublikować inny adres URL, zapisać stronę odsyłającą, zrobić tam potrzebne rzeczy i przekierować ponownie z wynikami.

+0

Po wysłaniu do innego kontrolera, nie można łatwo wrócić do bieżącego kontrolera z wstępnie wypełnionymi danymi formularza w przypadku błędu ... Zły projekt z Symfony – jsgoupil

Powiązane problemy