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

Crear select en Silex

25 de noviembre de 2014

Hola.

Necesito crear un <select> dentro de un formulario. Los datos del <select> vienen en array desde una base de datos.

$roles = $app["db"]->fetchAll("SELECT * FROM roles");
 
$form = $app['form.factory']->createBuilder('form')
    ->add('role','choice', array(
        'choices'   => $roles,
        'expanded'  => true,
    )
)->getForm();

Así, sí me genera el <select> pero con todos los valores provenientes desde la base de datos:id, nombre, valores, etc.

¿Cómo puedo generar mejor este elemento?


Respuestas

#1

Al tipo de campo choice le tienes que pasar un array asociativo, donde las claves del array son los valores del <select> y los valores del array son lo que se mostrará al usuario para que elija su opción dentro del <select>.

Con el código que tienes, lo más fácil sería crear ese array a mano de esta manera:

$results = $app["db"]->fetchAll("SELECT id, name FROM roles");
$roles = array();
foreach ($results as $result) {
    $roles[$result['id']] = $result['name']; 
}

Otra opción sería utilizar el tipo de campo Entity, que rellena un <choice> con los resultados de la búsqueda que le indiques o con los datos de la entidad que configures.

@javiereguiluz

26 noviembre 2014, 9:07
#2

Gracias Javier. Sí me funcionó. Creí que en Silex, se podría de otra manera. Con Symfony2 sí uso las entidades para crear los selects...

@cristian_angulo

26 noviembre 2014, 20:24