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 :

Ajouter une contrainte aux éléments d'une collection


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juillet 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 34
    Par défaut Ajouter une contrainte aux éléments d'une collection
    Bonjour à tous,

    Dans un de mes formulaires, j'ai une collection tout ce qu'il y a de plus banal :

    ModuleType :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            $builder
                ->add('controles', 'collection', array(
                    'label' => false,
                    'type' => new ModuleControleType(),
                    'allow_add' => true,
                    'allow_delete' => true,
                    'by_reference' => false
                ))
            ;
    ModuleControleType :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            $builder
                ->add('description', 'textarea', array(
                    'label' => 'Description',
                    'required' => false,
                    'attr' => array(
                        'rows' => 5
                    )
                ))
            ;
    Comme vous le voyez, cette collection est tout simplement un "textarea" qui sera enregistré en base de données. Si par défaut le required est "false", je souhaiterais qu'il devienne "true" lorsqu'on modifie (en d'autre terme, que les données précédemment enregistrées ne puissent pas être supprimées). Une fois que je saurais passer ce paramètre à true quand des données existent au chargement, j'en profiterais pour mettre une contrainte

    Quelqu'un sait comment faire ?
    Merci d'avance

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    il faut utiliser FormEvents::PRE_SET_DATA ainsi tu peux y mettre une condition dans ton formType

  3. #3
    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
    Ok avec dukoid, sinon une méthode de crapule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $entity = $builder->getData();
    // ...
    'required' => (bool)$entity->getId(),

  4. #4
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    héhé bien ta méthode de crapule, j'aime ça.
    mais à quoi ça sert le : (bool) (une sorte de cast sur un id )

  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
    Le (bool) sert à t'assurer d'avoir un booléen tout simplement : si ton entité est new, l'id vaut NULL et (bool)NULL => false. Si elle est en mode édition, elle a déjà un id, et (bool)$id => true si $id est non nul.

  6. #6
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    okey ! merci

Discussions similaires

  1. Ajouter une 2ème classe aux éléments d'une autre classe
    Par flavors dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/07/2015, 09h58
  2. Réponses: 6
    Dernier message: 16/07/2015, 11h49
  3. [VB.NET] Associer une clé aux éléments d'une combo
    Par Cereal123 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 30/03/2009, 14h52
  4. ajout d'un nouvel élément dans une collection
    Par sasuma dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 04/05/2008, 18h15
  5. Réponses: 0
    Dernier message: 31/08/2007, 20h38

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