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 :

Valeur d'un champ de formulaire pour concaténation [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Par défaut Valeur d'un champ de formulaire pour concaténation
    Bonjour,

    J'ai rajouté a un formulaire un champ input (qui donc n'a pas de set/get dans le modèle)

    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
     
    //lib/form/doctrine/base/BasePlainteForm.class.php
     
    abstract class BasePlainteForm extends BaseFormDoctrine
    {
      public function setup()
      {
        $this->setWidgets(array(
        //........
          'plainte_pos_comp' 	    => new sfWidgetFormInputText(),
        ));
     
        $this->setValidators(array(
        //......
          'plainte_pos_comp'            => new sfValidatorString(array('required' => false)),
        ));
    Je souhaite concatener sa valeur a un élément qui lui est dans le modèle (j'ai pensé par passé par le setter donc dans la méthode save() de la classe)

    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
     
    //lib/modele/doctrine/Plainte.class.php
     
    class Plainte extends BasePlainte
    {
    	public function save(Doctrine_Connection  $conn = null)
    	{
    	  $this->setPlaintePos(/*A PLACER ICI LE CONTENU DU CHAMP*/",".$this->getPlaintePos());
     
    	  return parent::save($conn);
    	  $conn -> commit();
     
    	}
     
    }
    Mais je n'arrive pas a récupérer le contenu, j'ai essayé avec getValue(), mais symfony me retourne un msg d'erreur et me dit qu'il ne connais pas cette méthode.

    Si quelqu'un a une solution je le remercie d'avance =)

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 136
    Par défaut
    Tu devrais plutôt surcharger la méthode "processValues".
    Un lien vers l'api : http://www.symfony-project.org/api/1..._processvalues

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Par défaut
    Merci Tonio de me répondre.

    Oui c'est peut etre mieux d'utiliser cette méthode, mais mon problème c'est surtout comment récupérer la valeur du champ de formulaire avant la sauvegarde alors qu'il n'est pas dans le modèle (Sans setPlaintePosComp() et getPlaintePosComp() ) comme j'ai rajouté le champ manuellement dans le fichier BasePlainteForm.class.php

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Par défaut
    J'ai regardé un peu sur les forums et j'ai trouvé la solution avec la methode proccessValues()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //lib/form/doctrine/PlainteForm.class.php
     
     public function processValues($values)
      {
        $values = parent::processValues($values);
     
        $values['plainte_pos'] =$values['plainte_pos_comp']. ",".$values['plainte_pos'];
     
        return $values;
     
      }
    Merci bien! =)

  5. #5
    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 !!!

    Dans ton premier poste tu parles de modifications apportées au form
    lib/form/doctrine/base/BasePlainteForm.class.php
    hors cet objet est régénère (supprimé et réécris) à chaque re build de la base. Il ne faut jamais le modifier.

    Transferts tes modifications dans la méthode configure() de l'objet
    lib/form/doctrine/PlainteForm.class.php
    qui, lui, n'est généré qu'une fois et est destiné à recevoir ces modifications.

    L'utilisation de la méthode proccessValue() peut être pratique si tu considères qu'il n'y a qu'un formulaire qui puisse apporter cette donnée et qui donc nécessitera ce traitement.

    Personnellement, je préfère modifier l'objet du modèle, dans ton cas probablement :
    lib/model/doctrine/plainte.class.php
    et lui adjoindre une méthode getPlaintePosComp()

    Par contre, j'ai un peu de mal a voir la justification au niveau de la structure de la base de deux données fusionnées dans un seul champ. Et surtout comment vont-elles survivre à une deuxième modification ? Doit-tu les désassembler ?

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Par défaut
    a oui j'avais pas pensé a ca! Tu fait comment pour déclarer un champ input dans le configure()?

    Pour repondre a ta question concernant la base de donnée, je développe un backend qui doit se greffer sur une bade de donnée deja existante et utilisée, du coup je ne peux pas la modifier et je dois l'utiliser tel quel!
    Je doit effectivement désassembler la valeur du champ! Je me suis pas encore attaquer a ce problème!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/03/2007, 22h03
  2. Récupérer la valeur d'un champ de formulaire
    Par pp51 dans le forum Langage
    Réponses: 10
    Dernier message: 08/08/2006, 22h23
  3. Valeur d'un champ de formulaire dans un mail
    Par Guranga dans le forum IHM
    Réponses: 2
    Dernier message: 08/06/2006, 12h57
  4. Réponses: 5
    Dernier message: 24/05/2006, 14h04
  5. valeur d'un champ de formulaire ajouté depuis une autre page
    Par manaboko dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 01/12/2005, 09h29

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