如何为Sonata sonata_type_date_picker设置默认配置

时间:2014-12-19 12:14:32

标签: symfony configuration sonata-admin

我从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文件中的应用程序级别设置一些默认配置?

1 个答案:

答案 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