I have a created a custom form field dropdown list for filtering by year. One of the things I want to do is to allow the user to filter by all years, which is the default option. I am adding this as an empty_value. However, when I render the form, it defaults on the first item that’s not the empty value. The empty value is there, just above it in the list. How do I make the page default to, in my case ‘All’ when the page initially loads? Code is below.
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';
}
}
I’m rendering my form in twig with a simple {{ form_widget(filter_form) }}
Try adding
empty_dataoption tonull, so it comes first. I have many fields of this type and it’s working, for example:EDIT: Another possibility (i suppose) would be setting
preferred_choices. This way you’ll get “All” option to the top. But i don’t know if it can work withnullempty_data, but you can changeempty_datato whatever you want: