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 :

Création référence concaténée


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2003
    Messages : 35
    Points : 34
    Points
    34
    Par défaut Création référence concaténée
    Bonjour,

    Je souhaiterais lors de la création d'un objet, par exemple un dossier d'un dossier d'un projet, avoir comme référence de dossier :
    Type de dossier + "/" + numero du dossier parent "." numéro du dossier ...
    ex : DI/01.02.00.00

    (et si possible en direct lors de la saisie du type mais bon c'est pas obligatoire...)

    et tout cela sur le form new.

    merci.
    Cifren

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

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

    C'est effectivement possible mais c'est un peu particulier comme situation tout de même.
    Dans un projet, j'avais besoin d'un numéro unique de dossier (xxx-AA avec xxx numéro en cours dans l'année et AA l'année). Il doit être généré automatiquement lorsqu'on crée une nouvelle ficher. Du coup, j'ai créé une méthode qui récupère le dernier numéro de dossier, vérifie l'année et incrément le numéro en cours si l'année est toujours la même et sinon, indique 001 si l'année a changé.
    Pour cela, je surcharge la valeur de mon champ de saisie avec le nouveau numéro et j'empêche l'édition du champ :


    Est-ce quelque chose dans cette idée que tu recherches ?
    symfony power user !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2003
    Messages : 35
    Points : 34
    Points
    34
    Par défaut
    bonjour,

    oui c'est ce que je veux faire, comment fait tu pour bloquer l'édition du champ et ajouter la référence en fonction de ce que l'on veut ? et dynamiquement ?

    merci.
    Cifren

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 384
    Points
    384
    Par défaut
    Ton problème est un peu plus complexe que le mien.

    Si j'ai bien compris, ton type de dossier, tu dois le choisir dans une liste déroulante ou un truc du style, non ?

    Si oui, soit tu utilises de l'ajax pour modifier la valeur de ton champ dynamiquement soit tu ne l'affiches pas et c'est au moment de sauvegarder ton dossier que tu surcharges la méthode save() de ton modèle et que tu génères la valeur du champ "référence du dossier".

    Précise moi un peu plus les choses et je pourrai te dire que faire
    symfony power user !

  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2003
    Messages : 35
    Points : 34
    Points
    34
    Par défaut
    Je vais bloquer la saisie de la reference avec :
    Code Symfony : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $this->widgetSchema['Dss_Ref'] = new sfWidgetFormInput(array(), array('readonly'=>'readonly'));
            $this->validatorSchema['Dss_Ref'] = new sfValidatorInteger(array('required' => false));

    Et apres soit je modifie la valeur en surchargeant la methode save (si tu peux me dire ou la trouver?)

    Soit je met du javascript qui modifira la reference en fonction du sfWidgetFormPropelChoice qui est le type, pour que ce soit plus dynamique.

    Je mettrais la solution des que j'aurais trouvé. Je dois juste trouver l'id du input reference dans le javascript pour pouvoir le modifier suite au changement du widgetChoice du type de dossier. Si tu as des indices

    merci
    Cifren

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 384
    Points
    384
    Par défaut
    Alors disons, on génère la référence après avoir posté le formulaire et donc on surcharge la méthode save() mais pour cela, on va changer le validateur de ton widget référence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->validatorSchema['Dss_Ref'] = new sfValidatorPass();
    Comme cela, aucun soucis pour poster le formulaire.

    Ensuite, dans ton modèle, tu crées la méthode save() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      public function save(Doctrine_Connection $con = null)
      {
        $ref = class::method(params);
        $this->setDssRef($ref);
        return parent::save($con);
      }
    avec :
    - class = ta classe perso que tu crées dans /lib
    - method = ta méthode perso qui va créer la valeur de ta référence (ne pas oublier de retourner la valeur)
    - params = les paramètres nécessaires à créer ta référence (type, numéro parent, ...), tu peux les appeler avec les méthodes magiques : $this->type, $this->numero.

    Voilà, normalement, aucun problème (attention à bien tester ta méthode qui créer la référence !).

    Je trouve cela plus propre que de mettre de l'ajax partout tout en sachant que dans ce cas, je ne le trouve pas nécessaire (une fois les données enregistrées, on est redirigé sur la page d'édition, autant l'afficher là :p).

    Laisse bien ton champ en readonly, ça devrait être nickel
    symfony power user !

Discussions similaires

  1. Création référence unique
    Par bdf94 dans le forum Autres
    Réponses: 0
    Dernier message: 23/02/2010, 14h14
  2. compteur de mois+création d'une référence
    Par dado91400 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/07/2007, 15h23
  3. Réponses: 4
    Dernier message: 08/06/2006, 23h04
  4. Algo de création de chaine par concaténation de variables
    Par Zhebulon dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 13/04/2006, 14h37
  5. [SOAP][Web Service] erreur création d'une référence Web
    Par Maximil ian dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 20/06/2005, 13h29

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