9
我有一个创建自定义表单域下拉列表按年筛选。我想要做的一件事是让用户过滤所有年份,这是默认选项。我将这添加为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) }}
嗯......现在的工作,我不知道为什么。我想我必须清除我的缓存或什么?所有选项都显示在顶部,但选定的选项是第二个或其他。现在它正确地默认为顶部选项。 – Squazic 2012-08-06 21:28:29
@Squazic很好,没关系:)也许它是缓存或者你没有重新加载整个页面... – gremo 2012-08-06 21:34:03
我得到这个工作,通过添加'empty_value'和'empty_data',但现在用户可以跳过所有需要的验证和提交而不选择任何实际有效的选项。 – phpguru 2015-04-01 18:56:07