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 :

surcharge admin générator champs cle etrangere [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 212
    Points : 108
    Points
    108
    Par défaut surcharge admin générator champs cle etrangere
    Bonjour,

    J'ai surchargé un formulaire de l' admin generator d' un des modules, mais je souhaiterai fixé un champs du formulaire qui actuellement propose une liste à l' utilisateur.

    Par exemple en cachant ce champs avec un input hidden et un setMonchamps('valeurdynamique') dans le contrôleur.

    Le cas présent est différent car je surcharge le formulaire new de l'admin generator.

    En plus l' idée est que cette modif ne soit pas valide dans mon module admin qui lui a besoin de disposer d' une liste pour ce champs. et donc seulement dans la partie surchargée.


    J'ai cherché du coté du generator.yml mais rien de bien convaincant.

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Il m'est avis que ...

    ... je ne comprend rien à ce que tu souhaites.

    Je te propose donc de reformuler ta question.

    Un exemple de ce qu'un utilisateur doit faire pourrait aider.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 212
    Points : 108
    Points
    108
    Par défaut
    OK .. je m' en doutais c'est tout simple mais pas facile à expliquer clairement en une fois..

    Je reprends..

    J' ai un formulaire admin que je surcharge donc il me fait le lien automatiquement avec les autres tables notamment sur un champs 'customer_id'.

    Cela est intéressant dans un usage admin, mais quand c ' un client X qui l' utilise. Celui ci ne doit pas voir les autres éléments de la liste du champs customer_id et le champs doit être rempli avec l' id du user qui est connecté par exemple.

    Est ce plus clair ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 212
    Points : 108
    Points
    108
    Par défaut
    Bonjour à tous,

    J' ai finalement résolu mon problème en héritant la classe Contributor généré par le admin générator, ce qui m' a permis de crée un formulaire de base dans cette classe et donc de gérer comme je le souhaite ma clé étrangère ainsi que le template.

    Dernier point, existe t-il un moyen pour personnaliser les champs du formulaire sans les modifier directement dans le template ?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 321
    Points : 265
    Points
    265
    Par défaut
    Qu'appelle tu personaliser ?
    Pour changer les label à coté des champs de ton formulaire, ça se passe dans le generator.yml
    Sinon pour modifier les champs eux même va voir le form concerné.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 212
    Points : 108
    Points
    108
    Par défaut
    Par exemple pour ne pas avoir une liste déroulante sur une clé étrangère mais juste la valeur de l' utilisateur qui est connecté.

    Les admin générator c' est bien mais dés le module doit être partiellement utilisé par des utilisateurs simple, Ca devient vite embettant.

    j' ai donc hérité ma classe pour ne pas avoir à les contraintes de l' admin générator et par soucll d' indépendance.

    Car la classe est utilisée aussi bien par des admin que par les clients qui ont juste le droit de modifier ce qui les concernent.

    Ensuite pour personnaliser les labels de mes champs j' ai utilisé la fonction setLabel() dans ma nouvelle classe NouelleClasseForm.

    Merci quand même.

  7. #7
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Citation Envoyé par mantex Voir le message
    Est ce plus clair ?
    Je vais commander du paracétamol.

    Je ne sais pas comment tu as réellement résolu, attention si tu fais transiter l'information dans un champ caché du formulaire, il reste modifiable facilement par un utilisateur averti et mal intentionné

    @insane1 le générator.yml ne permettra de modifier que si tu as générer un module d'administration, ce qui ne semble pas le cas ici.

    Je pense qu'il vaut mieux faire deux modules, un pour l'administration, un pour les utilisateurs, bien ; plutôt que de tenter de n'en faire qu'un, mal.

    Le mieux est de passer par le parameterHolder de l'objet sfUser pour transmettre une donnée masquée et qui ne doit pas être modifiée. Surtout si c'est l'id de l'utilisateur, qui devrait déjà y figurer.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 212
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par Michel Rotta Voir le message
    Je vais commander du paracétamol.

    @insane1 le générator.yml ne permettra de modifier que si tu as générer un module d'administration, ce qui ne semble pas le cas ici.
    Tout à fait..

    Je pense qu'il vaut mieux faire deux modules, un pour l'administration, un pour les utilisateurs, bien ; plutôt que de tenter de n'en faire qu'un, mal.

    et le principe de dry ? ;-) surtout pour 1 seul formulaire..

  9. #9
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Les deux formulaires ont des destinations différentes.

    Il reste possible (souhaitable) de partir d'un même form, qui, par l'héritage, pourra être facilement adapté avec le code spécifique à chaque module. De même, le code de traitement des objets du modèle sera partagé à partir de ces mêmes objets du modèle.

    En fait, seul le code réellement très spécifique à chaque module sera propre à chaque module et le DRY se portera bien
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

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

Discussions similaires

  1. une cle etrangere qui reference deux champs
    Par TorkK dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/11/2006, 16h10
  2. Réponses: 1
    Dernier message: 25/09/2006, 10h18
  3. clées etrangeres
    Par kkhaled dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/07/2004, 19h45
  4. Plusieurs clés Etrangères ?
    Par maahta dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 06/10/2003, 20h22
  5. supprimer une ligne avec cle etrangere
    Par BaBas dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/07/2003, 11h24

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