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
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
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