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 :

champs en lecture seule formulaire (Edit)


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut champs en lecture seule formulaire (Edit)
    Bonjour,
    Je voudrais savoir si c'est possible sur un formulaire Edit de symfony de mettre certains champs en lecture seule (pas de possibilité de les modifier)?
    je sais que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    unset($this['nom'])..
    permet de cacher complétement le champs, y aurait-il une méthode qui permet de l'afficher sans le modifer?

    Merci!!

  2. #2
    Membre expérimenté 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 : 36
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    http://www.developpez.net/forums/d90...-cle-primaire/

    Jette un œil aux dernières réponses, j'ai le sentiment que ça peut-être une bonne piste.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut
    Merci pour votre réponse.
    j'ai essayé de rajouter dans classe Form comme c'est indiqué dans le lien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->widgetSchema['nom'] = new sfWidgetFormInputText(array(), array('disabled' => 'disabled'));
    ça fonctionne mais quand je fais le save ça me regénére le formulaire avec des erreurs pour les champs obligatoires et "Unexpected extra form field named "price"..en plus tous les champs du formulaire que j'avais mis en unset sont vides..

  4. #4
    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
    Regardes ici.

  5. #5
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut
    Merci Michel,
    j'ai essayé ta réponse, mais dans mon formulaire j'ai un cas particulier:
    je fais un embedForm dans la classe du formulaire ("ArticleForm.php")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     $this->embedForm('livraison', new ArticleLivreForm());
    si j'applique ton code, càd construire le formulaire à la main dans le template, comment je pourrais intégrer l'embedForm à ce niveau?

    En plus, comment je dois gérer les validateurs du formulaire pour éviter d'avoir des erreurs au moment de la sauvegarde, en effet si je supprime les validateurs j'ai des erreurs de Widget non existant ?

  6. #6
    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 champs en lecture seul ne doivent (surtout) pas avoir de validateurs.

    Les embed form peuvent être géré à la main, il est possible de récupérer et de faire un foreach sur les form imbriqué. Je n'ai pas de code sous la main, mais j'ai déjà vu. Regarde du coté de google, si tu ne trouves rien, je plongerais à ta suite.

  7. #7
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut
    En fait, quand je veux enregistrer le formulaire, j'ai un message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Widget "mon_champs" does not exist.
    comment je fais pour que symfony n'aille pas chercher de widget pour chaque champs du formulaire?

    sinon j'ai toujours pas réussi à intégrer l'embed form dans le template

  8. #8
    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
    J'ai du mal à comprendre le problème de widget lors de l'enregistrement. En principe c'est les validateurs qui jouent ici.

    Il faudrait plus d'informations sur ton code.

    Je suis overbocké actuellement fait une recherche avec "symfony form embed template render" tu devrais trouver.

  9. #9
    Membre régulier
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2011
    Messages
    444
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2011
    Messages : 444
    Points : 108
    Points
    108
    Par défaut
    bonjour il faut que tu fait 2 condition une sur l'action ajouter et l'autre pour modifier et delete.
    voila un exemple : j'ai 2 module :client et KK et dans client je fait imbriqué le formulaire de Kk:

    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
    class ClientForm extends BaseClientForm
    {
      public function configure(){
     
     
             //condition sur le cas de create car isnew retourne create
             if($this->getObject()->isNew()) {
             $this->embedForm('gg', new KkForm());
             }
     
             //le signe  ! donc soit update ou delete
             if(!$this->getObject()->isNew()) {
             $a = new KkForm();
             foreach ($this->object['Kk'] as $index=>$Kk) {
             $this->embedForm('gg',new KkForm($Kk)); }
             $a->embedForm('gg',$a);}
     
    }
    }

Discussions similaires

  1. [AC-2013] Problème de champ en lecture seule dans formulaire base Web
    Par momoju dans le forum IHM
    Réponses: 3
    Dernier message: 15/06/2014, 15h04
  2. Champs en lecture seul dans un formulaire.
    Par lesanglier dans le forum Configuration
    Réponses: 0
    Dernier message: 05/10/2009, 16h56
  3. Champs en lecture seul dans un formulaire.
    Par lesanglier dans le forum SharePoint
    Réponses: 0
    Dernier message: 05/10/2009, 16h56
  4. un champ en lecture seul
    Par badboys206s16 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 06/07/2006, 09h32
  5. Réponses: 7
    Dernier message: 14/02/2006, 10h33

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