Ver Mensaje Individual
  #6 (permalink)  
Antiguo 01/11/2015, 11:14
molinasergio91
 
Fecha de Ingreso: enero-2013
Ubicación: Santa Fe, VT
Mensajes: 68
Antigüedad: 11 años, 3 meses
Puntos: 2
Respuesta: Formularios en distinto método

No puedo probar el codigo ahora pero la solucion mas rapida y simple que te puedo dar es esta(no estoy seguro de que sea practica y de rendimiento pero es la que menor cantidad de modificaciones necesita):

Código PHP:
use SymfonyBundleFrameworkBundleControllerController;
use 
TMKSeriesBundleEntitySeries;
use 
TMKSeriesBundleFormRegisterSerieType;

class 
DefaultController extends Controller
{
    public function 
indexAction($name)
    {
        return 
$this->render('TMKSeriesBundle:Default:index.html.twig', array('name' => $name));
    }

    public function 
loadSeriesAction($state)
    {

        
$request $this->getRequest();

        
$form $this->createFormAddSerie($request);

       
// CODIGO AGREGADO****************************************
        
if(get_class($form) == 'Symfony\Component\HttpFoundation\RedirectResponse')
        {
          return 
$form;
        }
        
//FIN DE CODIGO AGREGADO**********************************

        
if($state == '0'){
            
$title 'Siguiendo';
            
$state = array(0,3);
        } else if(
$state == '1'){
            
$title'Vistas';
        } else if (
$state == '2'){
            
$title 'Pendientes';
        }

        
$manager $this->getDoctrine()->getManager();

        
$series $manager->getRepository('TMKSeriesBundle:Series')->findByStateOrderBy($state);

        return 
$this->render('TMKSeriesBundle:Default:series.html.twig', array(
            
'series' => $series,
            
'title' => $title,
            
'form' => $form->createView()
            ));
    }

    public function 
createFormAddSerie($request){
        
$serieForm = new Series();
        
$form $this->createForm(new RegisterSerieType$serieForm);

        if(
$request->getMethod() == 'POST'){
            
$form->bind($request);

            if(
$form->isValid()){
                
$manager $this->getDoctrine()->getManager();
                
$manager->persist($serieForm);
                
$manager->flush();

                return 
$this->redirect($this->generateURL('loadSeries', array('state' => $serieForm->getState())));
            }
        }

        return 
$form;
    }

solo agregue 2 lineas.
como la funcion createFormAddSerie te puede devolver tanto como un redirectResponse o un Form, comprobamos antes si es un redirect, en el caso de que sea un redirect le agregamos un Return y listo. Otra cosa que podes hacer pero necesitarias mas cambios es hacer un metodo aparte para validar el formulario, pero si esta respuesta te sirve y sentis que es practica me quedaria con esa, sino estaria bueno esperar la respuesta de alguien que sepa mas que yo(casi todos XD), si no te sirve o tenes errores dejame un mensaje aca y mas tarde lo leo.