How do you default to the empty_value choice in a custom symfony form field type?

Try adding empty_data option to null, so it comes first. I have many fields of this type and it's working, for example:

class GenderType extends \Symfony\Component\Form\AbstractType
{

    public function getDefaultOptions(array $options)
    {
        return array(
            'empty_data'  => null,
            'empty_value' => "Non specificato",
            'choices'     => array('m' => 'Uomo', 'f' => 'Donna'),
            'required'    => false,
        );
    }

    public function getParent(array $options) { return 'choice'; }

    public function getName() { return 'gender'; }

}

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 with null empty_data, but you can change empty_data to whatever you want:

  public function getDefaultOptions(array $options)
  {
    return array(
        'empty_value'       => 'All',
        'empty_data'        => null,
        'choices'           => $this->yearChoices,
        'preferred_choices' => array(null)         // Match empty_data
    );
  }

Tags:

Symfony