我从Sonata Data Picker documentation知道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文件中的应用程序级别设置一些默认配置?
答案 0 :(得分:1)
为应用程序范围设置sonata" sonata_type_datetime_picker
默认值的一种方法是覆盖sonata_type_datetime_picker
的表单类型服务,并在类参数中定义自己的类来处理默认值。
1)在您的包form_types.xml
中创建一个服务文件,并覆盖奏鸣曲的服务,如
<?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