Sonata Admin Bundle:DatePicker 系列 [英] Sonata Admin Bundle: DatePicker range
问题描述
如何在使用 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屋!