Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/10/2015, 14:00
Chino27
 
Fecha de Ingreso: septiembre-2015
Mensajes: 71
Antigüedad: 8 años, 7 meses
Puntos: 0
Formularios en distinto método

Buenas tardes, otra vez vuelvo acudir al foro por otro problema.
A ver si soy capaz d explicarme: Tengo un controller con varios formularios y me parece muy engorroso tener la creación y la ejecución de todos los formularios en el mismo action, entonces he pensado en hacer una función de cada formulario, os enseño el 1º:

Método de creación del formulario
Código PHP:
public function createFormAddSerie($request){
        
$serieForm = new Series();
        
$form $this->createForm(new RegisterSerieType$serieForm);
        
        if(
$request->getMethod() == 'POST'){
            
$form->bindRequest($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;
    } 
Llamada desde el action principal del controller
Código PHP:
$request $this->getRequest();
$form $this->createFormAddSerie($request); 
Return del controlador donde renderiza
Código PHP:
return $this->render('TMKSeriesBundle:Default:series.html.twig', array(
            
'series' => $series,
            
'title' => $title,
            
'form' => $form->createView()
            )); 
Decir que teniendo todo el código en el mismo método (el action principal del controller) el formulario funciona perfectamente (creación y ejecución), pero a la hora d tenerlo separados, al crearlo va perfecto, pero al ejecutarlo, cuando entrar en el if para persistir me devuelve un FatalErrorException a la hora de hacer el createView(), pero, no debería hacerlo porque si lo persiste (lo hace, comprobado en la base de datos) debería redireccionar y volver a cargar el controlador pero si entrar en el sitio de persistir.

Espero haberme explicado bien. Gracias