如何设置Sonata sonata_type_date_picker的默认配置

问题描述 投票:0回答:1

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

php symfony configuration sonata-admin
1个回答
1
投票

在应用程序范围内为奏鸣曲的

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

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.