我从 Sonata Data Picker 文档 知道
sonata_type_date_picker
的字段配置可以通过 : 传递
$builder
->add('publicationDateStart', 'sonata_type_datetime_picker', array(
'dp_side_by_side' => true,
'dp_use_current' => false,
'dp_use_seconds' => false,
))
但是,是否可以在 yml 或 xml 文件中的应用程序级别设置一些默认配置?
在应用程序范围内为奏鸣曲的
sonata_type_datetime_picker
设置默认值的一种方法是覆盖 sonata_type_datetime_picker
的表单类型服务,并在类参数中定义您自己的类来处理默认值。
1)在你的包中创建一个服务文件
form_types.xml
并覆盖sonata的服务,例如
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="sonata.core.form.type.datetime_picker" class="Acme\DemoBundle\Form\Type\DateTimePickerType">
<tag name="form.type" alias="sonata_type_datetime_picker" />
<argument type="service" id="sonata.core.date.moment_format_converter" />
</service>
</services>
</container>
在上面的服务中,你可以看到我定义了一个类,位于
Acme\DemoBundle
2) 在
Acme\DemoBundle\Form\Type
中创建一个类并将其命名为 DateTimePickerType
并用奏鸣曲的 BasePickerType
类 扩展它
/**
* {@inheritdoc}
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
/**
* Here do what ever you need to change
*/
$resolver->setDefaults(array_merge($this->getCommonDefaults(), array(
'dp_use_minutes' => true,
'dp_use_seconds' => true,
'dp_minute_stepping' => 1,
)));
}
3)在主配置文件中导入您的服务文件,即
config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: @AcmeDemoBundle/Resources/config/form_types.xml }
完整代码演示请访问Git Hub