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')))
;
}
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" ]);
});
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.