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 :

admin generator et cle primaire


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2002
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 17
    Par défaut admin generator et cle primaire
    salut

    dans les formlaires crée par l admin generator, je ne peut pas afficher mes cles primaires . (les input sont creer en hidden)


    mes cles primaires ne sont pas un id autoincrementer mais corresponde a un numero unique (7 chiffre + 1 Lettre)

    - je souhaite pouvoir creer cette clé manuellement en mode creation
    - l afficher seulement en mode edtion

    savez vous comment faire ca ?

    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Avant d'essayer des trucs bizarres, est-ce que ça ne pourrait pas plutôt être possible de créer une autre colonne que tu nommerais "ref" par exemple pour remplir le rôle que tu décris, et laisser le fonctionnement normal des vrais id de la base de données ?

  3. #3
    Membre averti
    Inscrit en
    Mars 2002
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 17
    Par défaut
    justement, je voulais pas modifier les cles primaire de mes tables car ca va m obliger a reprendre toute mon appli qui est pratiquement terminé..

    je viens de trouver une solution en redefinissant le formulaire pour ce champ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class BackendMefForm extends MefForm
    {
    publicfunction configure()
    {
    parent::configure();
    
    $this->widgetSchema['code_mef'] = new sfWidgetFormInputText();
    
    $this->validatorSchema['code_mef'] = new sfValidatorString(array('max_length' => 11));
    
    }
    }
    

    ca marche bien en mode creation, le champ apparait
    par contre , il apparait aussi en mode edition et si je le modifie, ca fait une erreur... ce qui est normal

    comment le mettre en readonly en mode edition ?
    j ai essayer avec params: readonly="readonly" ca marche pas..

  4. #4
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->widgetSchema['code_mef'] = new sfWidgetFormInputText(array(), array('disabled' => 'disabled'));

  5. #5
    Membre averti
    Inscrit en
    Mars 2002
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 17
    Par défaut
    merci

    ca marche bien sauf que en mode creation, mon champ est egalement disabled

    comment le reactiver dans generator.yml ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je pensais que tu aurais trouvé ça tout seul mais bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if ($this->isNew())
    {
      $this->widgetSchema['code_mef'] = new sfWidgetFormInputText();
    }
    else
    {
      $this->widgetSchema['code_mef'] = new sfWidgetFormInputText(array(), array('disabled' => 'disabled'));
    }
    Ca devrait faire l'affaire ça

  7. #7
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut perte de l'information avec l'option 'disabled'
    Bonjour,

    Je reprends cette discution car je me suis basée sur la réponse de 'Tirkyth' qui permet d'afficher la clef primaire dans les pages new et edit du formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ($this->isNew())
    {
      $this->widgetSchema['code_mef'] = new sfWidgetFormInputText();
    }
    else
    {
      $this->widgetSchema['code_mef'] = new sfWidgetFormInputText(array(), array('disabled' => 'disabled'));
    }
    i
    Ce code fonctionne très bien, mais j'ai un petit souci. Lorsque je modifie des éléments dans le formulaire Edit (éléments qui ne sont pas disabled), puis que j'enregistre mes modifications il ne garde pas les informations des imputText disabled. Par conséquent j'ai un "required" dans mon champ de la clef primaire, alors qu'il était présent.

    Comment puis-je supprimer ce problème ?
    Merci,

    Ophel

  8. #8
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut
    Bonjour,

    Il a falu que je formule mon problème à l'écrit, pour que je trouve la solution.
    Je met la réponse car ça peut toujours aider quelqu'un (car cette petite chose m'a fait perde quelque temps...)
    Au lieux de mettre 'disabled' il faut mettre 'readOnly'.

    se qui devient pour le 'else' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->widgetSchema['code_mef'] = new sfWidgetFormInputText(array(), array('readOnly' => 'readOnly'));

  9. #9
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    ATTENTION !

    Les champs ainsi mis en lecture seul ne le sont pas réellement.

    Rien n'empêche un utilisateur averti ou un hacker d'utiliser un outils tel que firedebug pour modifier la donnée malgré le readonly sur le champ et donc d'envoyer une donnée correcte pour le validateur...

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 89
    Par défaut
    Salut,

    J'ai essayer avec "disabled" et je peux tout de même changer le champ. C'est normal ?

  11. #11
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    Même avec readonly tu peux changer le champ... en utilisant un outil comme firebug.


    En fait la solution que j'utilise est de gérer le template à la main.

    Et d'utiliser pour chaque champ un ->renderRow()

    Et pour le champs en lecture seul,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <th><?php echo $form['monChamp']->renderLabel() ?></th>
    <td class="disabled"><?php echo $form->getObject()->getMonChamp()
    Ainsi tu n'a aucune donnée attendues en retour. Impossible de les modifier.

    Et les données sont envoyées à chaque génération du formulaire.

    Par contre, j'en conviens, la création du template est un peu plus lourde.


    L'autre solution serait de créer un widget dédié à l'affichage, j'y ai déjà pensé, mais, à l'époque, je n'avais pas les compétences pour le faire, maintenant, c'est le temps qui manque

    Faudrait partir d'un sfWidgetForm et en modifiant la méthode render. Possible que cela ne soit pas beaucoup plus compliqué.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/05/2011, 23h48
  2. [1.x] [admin-generator] éditer les clés primaires
    Par Mitaka dans le forum Symfony
    Réponses: 2
    Dernier message: 04/06/2008, 14h33
  3. Generation automatique de cle primaire
    Par miniseb dans le forum Oracle
    Réponses: 5
    Dernier message: 31/07/2006, 11h57
  4. [ db2 ] cle primaire autoincrement
    Par hocinema dans le forum DB2
    Réponses: 4
    Dernier message: 25/02/2004, 14h20
  5. XSD, Cle primaire...
    Par Goupil dans le forum Valider
    Réponses: 3
    Dernier message: 21/10/2003, 09h04

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