2015-02-24 3 views
3

Раньше мы могли бы сделать что-то вроде:Дата рейнджер сборщика в соната администратора Фильтры

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

И вы получите 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?

+1

Возможной Дубликат [Соната администратор Bundle : DatePicker range] (http://stackoverflow.com/questions/14443558/sonata-admin-bundle-datepicker-range) – sergekv

ответ

2

У меня был таким же вопрос относительно doctrine_orm_datetime_range его из-за последнюю версию сонаты я установил "sonata-project/admin-bundle": "dev-master", но я не был в состоянии оказать doctrine_orm_datetime_range как текстовое поле, то я вернулся мой composer.json до 2.3 версии сонаты админ расслоения и я был в состоянии оказать дата время типа диапазона как текст

->add(
    'updatedAt', 
    'doctrine_orm_datetime_range', 
    array('label' => 'Updated'), 
    null, 
    array(
     'widget' => 'single_text', 
     'format' => 'yyyy-MM-dd HH:mm:ss', 
     'required' => false, 
     'attr' => array('class' => 'datetimepicker') 
    ) 
) 

composer.json

"require": { 
    "php": ">=5.3.3", 
    "symfony/symfony": "2.6.*", 
    "doctrine/orm": "~2.2,>=2.2.3,<2.5", 
    "doctrine/dbal": "<2.5", 
    "doctrine/doctrine-bundle": "~1.2", 
    "twig/extensions": "~1.0", 
    "symfony/assetic-bundle": "~2.3", 
    "symfony/swiftmailer-bundle": "~2.3", 
    "symfony/monolog-bundle": "~2.4", 
    "sensio/distribution-bundle": "~3.0,>=3.0.12", 
    "sensio/framework-extra-bundle": "~3.0,>=3.0.2", 
    "raulfraile/ladybug-bundle": "~1.0", 
    "jms/serializer-bundle": "dev-master", 
    "phpdocumentor/reflection-docblock": "dev-master", 
    "jms/security-extra-bundle": "dev-master", 
    "sonata-project/admin-bundle": "2.3", 
    "sonata-project/doctrine-orm-admin-bundle": "dev-master", 
    "sonata-project/core-bundle": "[email protected]", 
    "sonata-project/user-bundle": "dev-master", 
    "sonata-project/datagrid-bundle": "[email protected]", 
    "egeloen/ckeditor-bundle": "~2.2", 
    "sonata-project/formatter-bundle": "~2.3", 
    "sonata-project/news-bundle": "~2.3", 
    "sonata-project/classification-bundle": "~2.2", 
    "sonata-project/seo-bundle": "~1.1", 
    "liip/imagine-bundle": "~1.2", 
    "sonata-project/cache-bundle": "~2.2", 
    "sonata-project/page-bundle": "~2.3", 
    "sonata-project/notification-bundle": "~2.3", 
    "symfony-cmf/routing-bundle": "~1.3", 
    "sonata-project/intl-bundle": "~2.2", 
    "jms/translation-bundle": "~1.1", 
    "friendsofsymfony/jsrouting-bundle": "~1.5" 

} 

Но возвращаясь к предыдущей версии вы потеряете новые возможности сонаты такого вида сетки Ф.О. г админы

1

Другим способом с 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_options и end_options в field_options массиве еще не зарегистрированы

+0

Согласно этой проблеме (https://github.com/sonata-project/SonataAdminBundle/issues/3245) правильный Ключи rray для использования - field_options_start и field_options_end – frak

Смежные вопросы