Sonata Admin Bundle: gamme de lecteurs de données

Comment puis-je créer un doctrine_orm_datetime_range filtrer dans le paquet administrateur Sonata qui utilise le lecteur de données jQuery UI?

j'ai essayé le suivant, mais ça ne fonctionne pas:

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper
        ->add('datumUitgevoerd', 'doctrine_orm_datetime', array('widget' => 'single_text'), null, array('required' => false,  'attr' => array('class' => 'datepicker')))
    ;
}
21
demandé sur Jeroen 2013-01-21 20:58:20

2 réponses

mise à jour 2016-02-02

Si vous utilisez 3.* Symfony la configuration de brindilles suivante doit être utilisée:

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

mise à jour 2015-05-04

L'utilisation d'un capteur de date personnalisé n'est plus nécessaire. Sonata contient natif DateTime picker, qui fonctionne bien avec Twitter Boostrap.

pour activer les champs de formulaire DateTime picker, vous devez ajouter SonataCoreBundle:Form:datepicker.html.twig sous forme de brindilles ressources en app / config.yml:

twig:
    # ...
    form:
        resources:
            - 'SonataCoreBundle:Form:datepicker.html.twig'

Vous pouvez utiliser le sélecteur de la forme:

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

dans le filtre datetime:

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

ou datetime gamme de filtre:

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

ANCIENNE RÉPONSE

utiliser datePicker dans doctrine_orm_datetime utilisez ce code:

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

ou pour utiliser le curseur de données dans doctrine_orm_datetime_range le code devrait ressembler à:

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

et vous devriez surcharger le modèle principal pour ajouter votre fichier JavaScript personnalisé pour initialiser 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" ]);
 });
59
répondu pulzarraider 2016-02-02 08:24:31

je sais que c'est un vieux sujet, mais ça m'aide un peu de toute façon, donc peut-être que ça aidera quelqu'un dans le futur.

j'ai trouvé un moyen de mettre en place un format de date pour datepicker:

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

par défaut de ce format parametr est mis en place dans la Sonate\CoreBundle\Form\Type\DatePickerType.

9
répondu tommy 2016-06-06 15:41:26