symfony - Sonata 管理过滤器中的日期范围选择器

标签 symfony sonata-admin

以前,我们可以执行以下操作:

 ->add('workDate', 'doctrine_orm_date_range', array(), null, array('format' => 'dd-MM-yyyy', 'widget' => 'single_text', 'attr' => array('class' => 'datepicker')));

你会得到一个日期选择器。但这打破了并不断收到以下错误
The options "format", "widget" do not exist. Known options are: "action", "attr", "auto_initialize", "block_name", "by_reference", "cascade_validation", "compound", "constraints", "csrf_field_name", "csrf_message", "csrf_protection", "csrf_provider", "csrf_token_id", "csrf_token_manager", "data", "data_class", "disabled", "empty_data", "error_bubbling", "error_mapping", "extra_fields_message", "field_options", "field_type", "horizontal_input_wrapper_class", "horizontal_label_class", "horizontal_label_offset_class", "inherit_data", "intention", "invalid_message", "invalid_message_parameters", "label", "label_attr", "label_render", "mapped", "max_length", "method", "pattern", "post_max_size_message", "property_path", "read_only", "required", "sonata_admin", "sonata_field_description", "sonata_help", "translation_domain", "trim", "validation_groups", "virtual" 

任何人都知道如何更新此代码才能与新版本的奏鸣曲一起使用?

最佳答案

Sonata 管理员的另一种方式 2.4 , 使用 doctrine_orm_callback过滤器类型,示例:

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $now  = new \DateTime();

    $datagridMapper
        ->add('dateReport', 'doctrine_orm_callback',  array(
                'label' => 'Date',
                'callback' => function($queryBuilder, $alias, $field, $value) {
                    if (empty($value['value'])) { return; }

                    $date = $value['value'];
                    $queryBuilder->andWhere($alias.'.dateReport BETWEEN :start AND :end');
                    $queryBuilder->setParameter('start', $date->start);
                    $queryBuilder->setParameter('end', $date->end);

                    return true;
                },
                'field_type' => 'date_range',
                'field_options' => array(
                    'start_options' => array(
                        'years'           => range(2014, $now->format('Y')),
                        'dp_min_date'     => '12/1/2014',
                        'dp_max_date'     => $now->format('m/d/Y'),
                        'dp_default_date' => $now->format('m/d/Y'),
                        'dp_language'     => 'fr',
                        ),
                    'end_options' => array(
                        'years'           => range(2014, $now->format('Y')),
                        'dp_min_date'     => '12/1/2014',
                        'dp_max_date'     => $now->format('m/d/Y'),
                        'dp_default_date' => $now->format('m/d/Y'),
                        'dp_language'     => 'fr',
                        )
                    )
                )
            )

    ;
}
start_optionsend_optionsfield_options数组尚未记录

关于symfony - Sonata 管理过滤器中的日期范围选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28688368/

相关文章:

symfony - 除了定义 __toString() 之外,如何定义在 CRUD 形式中使用的 getter?

path - 对非模板数据使用 "path"和 "asset"

symfony 测试数据库插入

symfony - 将 Doctrine Repository 注入(inject) Controller

symfony - Controller 子目录?

php - 使用 FOS 用户包为自定义用户类型创建用户

symfony2 :You have requested a non-existent parameter "secret"

symfony - SonataAdmin Bundle 的非空字段

php - 如何将数组(可自定义)添加到 symfony2 表单(使用 sonata Admin)?

symfony - 为什么设置 data_class 在 Sonata 管理配置中不起作用?