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 dans les relations embarquées


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 131
    Points : 46
    Points
    46
    Par défaut Champs en lecture seule dans les relations embarquées
    Bonjour,

    J'ai un formulaire principal dans lequel j'embarque des formulaires correspondant aux objets liés. J'utilise pour cela la méthode embedRelation.

    Tout fonctionne bien. Il y a seulement une chose que je voudrais faire : comment feriez vous pour rendre les champs de ces relations embarquées en lecture seule ?

    Merci du coup de main,

    A+

  2. #2
    Membre averti Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 384
    Points
    384
    Par défaut
    Bonjour,

    Soit tu les redéclares dans un embed form en ajoutant du readonly :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->widgetSchema['ton_champ'] = new sfWidgetFormInput(array('type' => 'text'), array('readonly' => 'true'));
    Soit tu les déclares directement de cette manière dans ton formulaire initial.

    Soit tu copies le fichier du formulaire initial en renommant ta classe en genre : ModelReadonlyForm et tu redéclares tous les champs avec le readonly.

    Tu dois pouvoir te simplifier le code sinon en utilisant du setAttribute('readonly', true) sur chaque widget (soit avec une boucle soit à la main).

    Voilà, je te donne des idées, à toi de trouver la meilleure situation pour ton problème

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 131
    Points : 46
    Points
    46
    Par défaut
    Salut !

    Ah merci, c'était bien l'Italie ?

    En fait j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // les témoins déjÃ* ajoutés
    		if (!$this->isNew()) { 
    			$this->embedRelation('Temoins');
     
    			// On empêche la modification de témoins déja liés dans les formulaires embarqués
    			$embeddedForms = $this->getEmbeddedForms();
    			foreach($embeddedForms['Temoins'] as $t){
    				echo($t);
    				  $t->widgetSchema['nom'] = new sfWidgetFormInput(array('type' => "text"), array('readonly' => true));
    				  $t->widgetSchema['prhnom'] = new sfWidgetFormInput(array('type' => "text"), array('readonly' => true));
    			}
    		}
    ... Mais ça marche pas... Les champs sont toujours modifiables.. Peut être que les configure sont exécutés après et que du coup mon code n'a pas d'effet.. ?

  4. #4
    Membre averti Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 384
    Points
    384
    Par défaut
    As-tu essayé de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $t->widgetSchema['nom'] = new sfWidgetFormInputPassword();
    pour voir s'il prenait en compte ta modification ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 131
    Points : 46
    Points
    46
    Par défaut
    Bonne idée.. Effectivement, il ne prend pas ces lignes en compte.. chelou. Mais il rentre bien dans la boucle, ça c'est sur, mon echo s'affiche bien.

  6. #6
    Membre averti Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 384
    Points
    384
    Par défaut
    Par hasard, ne faut-il pas réembarquer les modifications ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->embedForm('ta form', $t);
    Mais à mon avis, il faut faire autrement. Peut-être directement dans le TemoinsForm.class.php en vérifiant if($this->isNew()) ou un truc du style mais l'idée est là.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 131
    Points : 46
    Points
    46
    Par défaut
    Voici donc, en suivant tes conseils, la solution que j'ai retenue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(!$this->isNew()){
    			$mesTemoins = $this->getObject()->Temoins;
    			$subFormTemoins = new sfForm();
    			$numero = 0 ;
    			foreach($mesTemoins as $t){
    			  	 $subFormTemoins->embedForm($numero,new TemoinReadOnlyForm($t));
    			  	 $numero++;
    			}
    			$this->embedForm('Temoins', $subFormTemoins);
    		}
    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
    <?php
     
    /**
     * Temoin form.
     *
     * @package    declarationsAT
     * @subpackage form
     * @author     Your name here
     * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
     */
    class TemoinReadOnlyForm extends BaseTemoinForm
    {
      public function configure()
      {
      	$this->widgetSchema->setformformattername('list');
      	unset($this["declaration_list"]);
      	$this->widgetSchema['nom'] = new sfWidgetFormInput(array('type' => "text"), array('readonly' => true));
    	$this->widgetSchema['prenom'] = new sfWidgetFormInput(array('type' => "text"), array('readonly' => true));
     
      }
     
    }

  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
    Ce système présente un inconvénient, en cas du formulaire suite à un problème de validation, les champs sont alors vide...

    De plus le readonly est une propriété HTML et n'empèche en rien de modifier la réponse post (avec firebug par ex) et de renvoyer des données dans les champs, il faut alors s'assurer qu'il ne sont pas modifier.

    On arrive à un système d'une lourdeur très importante.

    La solution que j'utilise est de générer le formulaire à la main, ligne par ligne et pour les zone en readonly, libellé et champs à part. Le champs étant un simple écho, pas de problème de retour possible.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 131
    Points : 46
    Points
    46
    Par défaut
    Très juste. Bonne observation. Je vais suivre la piste que tu m'indiques !

    Merci !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 131
    Points : 46
    Points
    46
    Par défaut
    ..

  11. #11
    Membre averti Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 384
    Points
    384
    Par défaut
    Salut toi

    Bien le we ? :p

    C'est un peu hors-sujet mais, pour avoir déjà connu ce problème, comment gères-tu le fait que deux personnes peuvent avoir le même nom/prénom ?


    Edit : smal d'éditer un message sans le laisser

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 131
    Points : 46
    Points
    46
    Par défaut
    Salut !

    HS : Bien bien le week end, enfin j'ai passé les deux jours à poser du plancher sur des poutres chez un pote dur le lundi !! Et toi, bien passé ?

    Pardon c'est parce que je m'étais trompé de sujet.. J'en ai créé un nouveau du coup ! Eh ben t'as réagis vite !!! j'ai du le laisser dix secondes mon post !!

    Arvi !

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. Réponses: 2
    Dernier message: 27/07/2006, 15h54
  5. 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

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