IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

[Symfony2] FormBuilder -> Entity -> Format : Date [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet multimédia
    Inscrit en
    Juin 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet multimédia
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 35
    Par défaut [Symfony2] FormBuilder -> Entity -> Format : Date
    Salut à tous,

    Je me permets de poster car je n'ai trouvé aucun problème similaire au mien sur la toile...

    J'ai deux questions :

    1 - Comment faire pour que le form builder ne récupère qu'une seul instance d'un colonne ?
    exemple : j'ai plusieurs fois le nom CLAUDE dans la colonne NOM, je voudrais qu'il n'aparaisse qu'une seule fois dans le champs select (un peu comme un SELECT DISTINCT en sql)

    2 - J'ai un champ "Date" en BDD que je souhaite récupéré via un FormBuilder afin d'implémenter un champs de type SELECT, actuellement il me met une erreur de conversion en STRING mais je ne sais pas vraiment ou agir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Object of class DateTime could not be converted to string") in form_div_layout.html.twig at line 82.
    Voici mon PointageType, et oui j'essai de mettre en place un système de pointage ^^ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('idPerso','text',array(
                    'label'=>false,
                    'attr' => array('class'=> 'form-control',
                                    'autofocus'=>true)))
                ->add('nom','entity',array(
                    'label'=>false, 
                    'class' => 'ExtranetAdminBundle:Pointage',
                    'property' => 'nom',
                    'expanded' => false,
                    'multiple' => false,
                    'empty_value' => 'Choisissez un salarié',
                    'attr' => array('class'=> 'form-control')
                    ))
                ->add('jour','entity',array(
                    'label'=>false, 
                    'class' => 'ExtranetAdminBundle:Pointage',
                    'property' => 'jour',
                    'expanded' => false,
                    'multiple' => false,
                    'empty_value' => 'Choisissez une date',
                    'attr' => array('class'=> 'form-control')
                    ));
        }
    Si je change le property en mettant une colonne de type string le formbuilder fonctionnera correctement...

    Merci à vous !

  2. #2
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    1. Tu peux spécifier un query builder pour la liste de ton champs entity dans lequel tu fais la requête de ton choix.
    http://symfony.com/doc/current/refer...#query-builder

    2. Le rendu d'une date doit être formaté dans twig avec le filtre date.
    http://twig.sensiolabs.org/doc/filters/date.html

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet multimédia
    Inscrit en
    Juin 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet multimédia
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 35
    Par défaut
    Ok je vais étudier ce que tu me dis et te dirais ce qu'il en est.

    Merci !

  4. #4
    Membre averti
    Homme Profil pro
    Chef de projet multimédia
    Inscrit en
    Juin 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet multimédia
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 35
    Par défaut
    Alors pour le SELECT DISTINCT j'ai essayé plusieurs solution, aucune ne fonctionnent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     $builder
                ->add('idPerso','text',array(
                    'label'=>false,
                    'attr' => array('class'=> 'form-control',
                                    'autofocus'=>true)))
                ->add('nom','entity',array(
                    'label'=>false, 
                    'class' => 'ExtranetAdminBundle:Pointage',
                    'property' => 'nom',
                    'expanded' => false,
                    'multiple' => false,
                    'empty_value' => 'Choisissez un salarié',
                    'attr' => array('class'=> 'form-control'),
                    'query_builder' => function(EntityRepository $er) {
                    return $er->createQueryBuilder('u')
                        ->select('u')
                        ->distinct();
                      },
                    ));
    On dirait qu'il ne prend pas en compte mon query builder !?

    Pour le rendu de Date, je n'ai pas le moyen de le transformer dans TWIG car je le récupère directement de la base de donnée, et c'est au niveau du FormBuilder que ça coince et non au niveau de la vue...

  5. #5
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    C'est quoi cet alias 'u' ? Pourquoi tu as un alias 'u' alors que c'est le repository de ton entité Pointage qui est utilisé.
    Bon et sinon au pire des cas, tu peux remplacer ton distinct par un group by 'name'.

    Je me permets d'insister, cette erreur indique une erreur dans un template.
    An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Object of class DateTime could not be converted to string") in form_div_layout.html.twig at line 82.
    Mais ou qu'elle soit la solution est la même : il faut que tu formates ton objet date : que ce soit avec Twig, ou en PHP.

  6. #6
    Membre averti
    Homme Profil pro
    Chef de projet multimédia
    Inscrit en
    Juin 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet multimédia
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 35
    Par défaut
    Ok ça marche pour la conversion de date.

    Concernant le SELECT DISTINCT J'ai essayé le Group_By :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                ->add('nom','entity',array(
                    'label'=>false, 
                    'class' => 'ExtranetAdminBundle:Pointage',
                    'property' => 'nom',
                    'expanded' => false,
                    'multiple' => false,
                    'group_by' => 'nom',
                    'empty_value' => 'Choisissez un salarié',
                    'attr' => array('class'=> 'form-control'),
                    ));
    Ça me donne un INPUT SELECT comme ceci :

    Nom : 000.jpg
Affichages : 992
Taille : 10,3 Ko

    Et sans le group_by, ça me donne :

    Nom : 1111.jpg
Affichages : 998
Taille : 9,1 Ko

    Concernant l'alias U j'ai repris le contenu d'un tutoriel que j'ai trouvé sur internet, il me semblais que l'on pouvait mettre n'importe quel alias...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Format date : y'a forcément plus simple...
    Par ZERS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/12/2004, 15h28
  2. Transformation en format Date
    Par Jean-Matt dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/11/2004, 16h20
  3. Tester un format date
    Par Tapioca dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 30/06/2004, 10h18
  4. interfaces Access et format Date
    Par say dans le forum InterBase
    Réponses: 21
    Dernier message: 10/05/2004, 17h24
  5. Format date
    Par cochet dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/03/2004, 08h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo