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 originalmy_form:
class: AppBundle\Utils\Formularios
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