Sonata Admin Bundle:DatePicker 系列 [英] Sonata Admin Bundle: DatePicker range

查看:18
本文介绍了Sonata Admin Bundle:DatePicker 系列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在使用 jQuery UI 日期选择器的 Sonata Admin Bundle 中创建 doctrine_orm_datetime_range 过滤器?

How would I create a doctrine_orm_datetime_range filter in the Sonata Admin Bundle which uses the jQuery UI datepicker?

我尝试了以下方法,但不起作用:

I tried the following, but it doesn't work:

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper
        ->add('datumUitgevoerd', 'doctrine_orm_datetime', array('widget' => 'single_text'), null, array('required' => false,  'attr' => array('class' => 'datepicker')))
    ;
}

推荐答案

不再需要使用自定义日期选择器.Sonata 包含本机日期时间选择器,可与 Twitter Boostrap 配合使用.

Using custom date picker is not needed anymore. Sonata contains native datetime picker, that works well with Twitter Boostrap.

要激活日期时间选择器表单字段,您必须启用加载包含相关代码的树枝模板.

To activate the datetime picker form fields, you have to enable loading the twig template that contains the related code.

对于 Symfony 4:

# config/packages/twig.yaml
twig:
    # ...
    form_themes:
        - '@SonataCore/Form/datepicker.html.twig'

对于 Symfony 3:

# app/config/config.yml
twig:
    # ...
    form_themes:
        - 'SonataCoreBundle:Form:datepicker.html.twig'

对于 Symfony 2:

# app/config.yml:
twig:
    # ...
    form:
        resources:
            - 'SonataCoreBundle:Form:datepicker.html.twig'

用法

您可以在表单定义中使用选择器:

USAGE

You can use the picker in form definition:

    use SonataCoreBundleFormTypeDatePickerType;

    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            ->add('createdAt', DatePickerType::class);
    }

在日期时间过滤器中:

    use SonataCoreBundleFormTypeDatePickerType;

    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
    {
        $datagridMapper
                ->add('createdAt', 'doctrine_orm_datetime', ['field_type'=> DatePickerType::class]);
    }

或作为日期时间范围过滤器:

or as datetime range filter:

    use SonataCoreBundleFormTypeDateTimeRangePickerType;

    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
    {
        $datagridMapper
                ->add('createdAt', 'doctrine_orm_datetime_range', ['field_type'=> DateTimeRangePickerType::class]);
    }

旧答案

要在 doctrine_orm_datetime 中使用 datePicker,请使用以下代码:

OLD ANSWER

To use datePicker in doctrine_orm_datetime use this code:

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper->add('datumUitgevoerd', 'doctrine_orm_datetime', array(), null, array('widget' => 'single_text', 'required' => false,  'attr' => array('class' => 'datepicker')));
}

或者在doctrine_orm_datetime_range中使用datePicker,代码应该是这样的:

Or to use datePicker in doctrine_orm_datetime_range the code should look like:

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper->add('datumUitgevoerd', 'doctrine_orm_datetime_range', array(), null, array('widget' => 'single_text', 'required' => false,  'attr' => array('class' => 'datepicker')));
}

并且您应该重载主模板以添加您的自定义 javascript 文件来初始化 DatePicker.

And you should overload main template to add your custom javascript file to initialize DatePicker.

#File app/config.yml
sonata_admin:
    title:      Admin
    title_logo: /logo_admin.png
    templates:
        layout: AcmeDemoBundle::standard_layout.html.twig  
 #...another Sonata and Symfony settings...

{# File src/Acme/Bundle/DemoBundle/Resources/views/standard_layout.html.twig #}
{% extends 'SonataAdminBundle::standard_layout.html.twig' %}

{% block javascripts %}
    {{ parent() }}
    <script src="{{ asset('bundles/acmedemo/js/jquery_admin.js') }}" type="text/javascript"></script>
 {% endblock %}

 //File webundlesacmedemojsjquery_admin.js
 jQuery(document).ready(function(){
      jQuery.datepicker.setDefaults( jQuery.datepicker.regional[ "" ] );
      jQuery(".datepicker").datepicker( jQuery.datepicker.regional[ "en" ]);
 });

这篇关于Sonata Admin Bundle:DatePicker 系列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆