Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

¿En Silex se pueden crear formularios como servicios?

26 de noviembre de 2014

Hola, un saludo.

Con miras a mejorar una aplicación que hago y, por muchas razones, busco la manera de desaclopar un poco más el código que estoy escribiendo.

Mi intensión es la de poder crear formularios como servicios: ¿Silex lo permite?

Quiero poder hacer lo siguiente:

...

class FormServiceProvider implements ServiceProviderInterface {

public function register(Application $app)
{
    $app['form'] = $app->protect(function ($name) use ($app) {
 
        $data = array(
         'name' => 'Your name',
         'email' => 'Your email',
        );
 
       $form = $app['form.factory']->createBuilder('form', $data)
       ->add('name')
       ->add('email')
       ->add('gender', 'choice', array(
        'choices' => array(1 => 'male', 2 => 'female'),
        'expanded' => true,
        ))
      ->getForm();
 
     return $form;
    });
}
 
public function boot(Application $app)
{
}

}

Todo esto no me arroja un error (Attempted to call method "createView" on class "Closure") hasta que le paso al controllador el objeto Form del servicio para renderizar el formulario en la vista: "form"=>$form->createView()...

Quedo a la espera de su ayuda. Saludos cordiales


Respuestas

#1

Hola, he encontrado el error (la solución) a este problema.

Sí se pueden crear formularios como servicios. La solución es: al crear la 'instancia' de este servicio se debe poner así $form = $app'form'. Con los paréntesis. Si se quitan los paréntesis arroja el error que expuse arriba!

Saludos!

@cristian_angulo

26 noviembre 2014, 23:19