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

Te voy a dar un ejemplo de symfony 2.6(Trata de adaptarlo a tu symfony), pero es algo complicado(ya que veo que tenes un nivel bajo de comprension en symfony):

Para crear una clase que administre los formularios como vos quieras vas a necesitar declararla como un servicio, primero creamos nuestra clase el directorio Utils de tu bundle(si no lo tenes lo creas)

Código PHP:
<?php
// AppBundle\Utils\Formularios.php;
namespace AppBundleUtils;

use 
SymfonyComponentFormFormFactoryInterface;
///ENTITY
use AppBundleEntityCuentas;
//TYPE
use AppBundleFormTypeCuentasType;

class 
Formularios
{
  public 
$formFactoryInterface;

  public function 
__construct(FormFactoryInterface $formFactoryInterface)
  {
    
$this->formFactoryInterface $formFactoryInterface;
  }

  public function 
getForm()
  {
    return 
$this->formFactoryInterface->create(new CuentasType(),new Cuentas());
  }
}
El FormFactoryInterface es para crear los formularios como si fuera del controller( $this->createForm).

luego vas a la configuracion de servicios(services.yml), yo la tengo en .yml :
Código YML:
Ver original
  1. my_form:
  2.         class: AppBundle\Utils\Formularios
  3.         arguments: ["@form.factory"]

La linea arguments es para insertar en la clase el servicio form.factory.

En el controller:
Código PHP:
public function cuentasAction(Request $request)
     {
$form$this->get('my_form')->getForm();
$form->handleRequest($request/// <--- Creo que es el equivalente de $form->bind

if($form->isValid()) {
          ......
          return .......;
}

 return 
$this->render('panel/registrarCuenta.html.twig',array(
             
'renderizar' => $form->createView()
         ));

Con eso ya estaria todo, tendrias que adaptarlo a lo que vos necesites, podes crear un formulario dentro de la clase Formularios con solo hacer:
$this->formFactoryInterface->create($type,$data,[$array])
como si fuera del controller, en mi ejemplo te devuelve el form, podes adaptarlo para que se valide desde esa clase o lo que vos quieras.

Con respecto si esto es buena practica, no lo se.
Espero haberte podido ayudar