Tengo una lista desplegable de campo de formulario personalizada para filtrar por año. Una de las cosas que quiero hacer es permitir que el usuario filtre por todos los años, que es la opción predeterminada. Estoy agregando esto como empty_value
. Sin embargo, cuando presento el formulario, el valor predeterminado es el primer elemento que no es el valor vacío. El valor vacío está allí, justo encima de él en la lista. ¿Cómo configuro la página de forma predeterminada, en mi caso 'Todos' cuando la página se carga inicialmente? El código está abajo.¿Cómo se establece de forma predeterminada la opción empty_value en un tipo de campo de formulario personalizado de Symfony?
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class YearType extends AbstractType
{
private $yearChoices;
public function __construct()
{
$thisYear = date('Y');
$startYear = '2012';
$this->yearChoices = range($thisYear, $startYear);
}
public function getDefaultOptions(array $options)
{
return array(
'empty_value' => 'All',
'choices' => $this->yearChoices,
);
}
public function getParent(array $options)
{
return 'choice';
}
public function getName()
{
return 'year';
}
}
estoy haciendo mi forma de rama con un simple {{ form_widget(filter_form) }}
Hmm ... ahora funciona y no estoy seguro de por qué. Creo que tuve que borrar mi caché o algo así? Las opciones 'Todo' se mostraban en la parte superior, pero la seleccionada era 2da o algo así. Ahora está correctamente predeterminado a la opción superior. – Squazic
@Squazic bien, está bien :) Tal vez es el almacenamiento en caché o tal vez no ha vuelto a cargar toda la página ... – gremo
Lo he hecho funcionar agregando 'empty_value' y' empty_data' pero ahora el usuario puede omitir toda la validación requerida y enviar sin elegir ninguna de las opciones realmente válidas. – phpguru