symfony - 如何在自定义symfony表单字段类型中默认使用empty_value选项?

标签 symfony

我创建了一个自定义表单字段下拉列表,用于按年份过滤。我要做的一件事是允许用户按年份过滤,这是默认选项。我将其添加为empty_value。但是,当我渲染表单时,它默认显示在不是空值的第一个项目上。空值在那里,就在列表的上方。初始加载页面时,如何将页面默认设置为“全部”?代码如下。

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';
  }
}

我正在用一个简单的{{ form_widget(filter_form) }}在 Twig 中渲染我的表单

最佳答案

尝试将empty_data选项添加到null,所以它是第一个。我有很多这种类型的字段,并且可以正常工作,例如:

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'; }

}

编辑:另一种可能性(我想)是设置 preferred_choices 。这样,您将在顶部获得“全部”选项。但是我不知道它是否可以与null一起empty_data,但是您可以将empty_data更改为您想要的任何内容:

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

关于symfony - 如何在自定义symfony表单字段类型中默认使用empty_value选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11834322/

相关文章:

symfony - FOS 休息包 : Can the response be gzipped?

php - 在 Symfony 中输入提示 json 对象

php - Doctrine2 - 一次多次插入

Symfony2 单 Controller 多路由

php - session_write_close symfony 2 和 3

forms - symfony 4 中 `getBlockPrefix` 的限制值

javascript - 如何在 Symfony 中使用 Composer 包中的 javascript

.htaccess - htaccess 与子目录中的 Symfony,无法隐藏/web

symfony - 如何为 assetic 的 TypeScript 过滤器指定 tsconfig.json?

mysql - SQL 查询 - 使用不同类型过滤