Sonata Admin Bundle:DatePicker范围

Jer*_*oen 22 datepicker jquery-ui-datepicker symfony-sonata symfony-2.1 sonata-admin

如何doctrine_orm_datetime_range在使用jQuery UI datepicker的Sonata Admin Bundle中创建过滤器?

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

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

pul*_*der 60

更新2016-02-02

如果您使用的是3.*Symfony,则必须使用以下树枝配置:

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

更新2015-05-04

不再需要使用自定义日期选择器.Sonata包含原生日期时间选择器,适用于Twitter Boostrap.

要激活日期时间选择器表单字段,您必须SonataCoreBundle:Form:datepicker.html.twig在app/config.yml中添加 twig表单资源:

twig:
    # ...
    form:
        resources:
            - 'SonataCoreBundle:Form:datepicker.html.twig'
Run Code Online (Sandbox Code Playgroud)

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

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('createdAt', 'sonata_type_date_picker');
}
Run Code Online (Sandbox Code Playgroud)

在日期时间过滤器中:

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper
            ->add('createdAt', 'doctrine_orm_datetime', array('field_type'=>'sonata_type_datetime_picker',));
}
Run Code Online (Sandbox Code Playgroud)

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

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper
            ->add('createdAt', 'doctrine_orm_datetime_range', array('field_type'=>'sonata_type_datetime_range_picker',));
}
Run Code Online (Sandbox Code Playgroud)

老答复

要使用datePicker,请doctrine_orm_datetime使用此代码:

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

或者在doctrine_orm_datetime_range代码中使用datePicker 应该如下所示:

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

你应该重载主模板来添加你的自定义JavaScript文件来初始化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...
Run Code Online (Sandbox Code Playgroud)
{# 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 %}
Run Code Online (Sandbox Code Playgroud)
 //File web\bundles\acmedemo\js\jquery_admin.js
 jQuery(document).ready(function(){
      jQuery.datepicker.setDefaults( jQuery.datepicker.regional[ "" ] );
      jQuery(".datepicker").datepicker( jQuery.datepicker.regional[ "en" ]);
 });
Run Code Online (Sandbox Code Playgroud)

  • 似乎这个解决方案不再适用于Symfony 2.6 ......但是:`$ datagridMapper-> add('expirationDate','doctrine_orm_date_range',['field_type'=>'sonata_type_date_range','field_options'=> array( 'widget'=>'single_text','required'=> false,'attr'=> array('class'=>'datepicker'))]);`给我的诀窍! (2认同)

小智 11

我知道这是一个古老的话题,但无论如何它对我有所帮助,所以也许它将来会对某人有所帮助.

我找到了一种为datepicker设置日期格式的方法:

$datagridMapper->add('createdAt', 'doctrine_orm_date_range', [
    'field_type'=>'sonata_type_date_range_picker',
    'field_options' => [
        'field_options' => [
            'format' => 'yyyy-MM-dd'
        ]
    ]
]);
Run Code Online (Sandbox Code Playgroud)

默认情况下,在Sonata\CoreBundle\Form\Type\DatePickerType中设置格式参数.


Seb*_*eck 5

如果您需要 Symfony 4 中的日期时间范围过滤器

在此输入图像描述

您可以使用:

# config/packages/twig.yml
twig:
    form_themes:
        - '@SonataCore/Form/datepicker.html.twig'
Run Code Online (Sandbox Code Playgroud)

注意:对于Sonata 3,您必须使用:

# config/packages/twig.yml
twig:
    form_themes:
        - '@SonataForm/Form/datepicker.html.twig'
Run Code Online (Sandbox Code Playgroud)

管理类:

use Sonata\CoreBundle\Form\Type\DateTimeRangePickerType;

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