datepicker - 奏鸣曲管理包 : DatePicker range

标签 datepicker symfony-2.1 jquery-ui-datepicker symfony-sonata sonata-admin

我将如何创建 doctrine_orm_datetime_range使用 jQuery UI 日期选择器的 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')))
    ;
}

最佳答案

不再需要使用自定义日期选择器。 Sonata 包含 native 日期时间选择器,可以很好地与 Twitter Boostrap 配合使用。

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

配置

对于 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'

用法

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

    use Sonata\CoreBundle\Form\Type\DatePickerType;

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

在日期时间过滤器中:

    use Sonata\CoreBundle\Form\Type\DatePickerType;

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

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

    use Sonata\CoreBundle\Form\Type\DateTimeRangePickerType;

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

旧答案

doctrine_orm_datetime 中使用 datePicker使用此代码:

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代码应如下所示:

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。

#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 web\bundles\acmedemo\js\jquery_admin.js
 jQuery(document).ready(function(){
      jQuery.datepicker.setDefaults( jQuery.datepicker.regional[ "" ] );
      jQuery(".datepicker").datepicker( jQuery.datepicker.regional[ "en" ]);
 });

关于datepicker - 奏鸣曲管理包 : DatePicker range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14443558/

相关文章:

php - Propel,为选择语句添加别名

asp.net-mvc - asp.net mvc HTML5 日期输入类型

jquery - Datepicker setDate 不再工作了?

php - 交响乐 2 |修改具有文件(图片)字段的对象时出现表单异常

php - Doctrine 查询语法错误

javascript - jqueryui datepicker 不显示范围内的所有年份

jquery - 如何在 jQuery 中向日期添加时间

jquery-ui-datepicker - jquery 日期选择器 : defining mindate and maxdate from dropdown

php - 将引导日期选择器中的日期插入 MySQL 日期字段不起作用

javascript - 禁用过去日期和星期日的日期选择器