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 :

sfWidgetFormDoctrineJQueryAutocompleter partiellement rempli pour la modification d'un enregistrement [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 37
    Par défaut sfWidgetFormDoctrineJQueryAutocompleter partiellement rempli pour la modification d'un enregistrement
    Bonjour,
    je fais à nouveau appel à vos connaissances pour un souci que j'ai depuis quelques temps sans résolution...

    Dans mon formulaire de saisie d'entreprise (table entreprise), j'ai un champ personne que j'ai transformé en sfWidgetFormDoctrineJQueryAutocompleter afin qu'à la saisie, il aille chercher un nom de la table personne.
    Ce lien fonctionne très bien pour l'ajout d'une nouvelle entreprise. Mais dès que je veux éditer une entreprise, je dois resaisir ce champ, car il n'est pas rempli automatiquement par SF selon les données existantes. Pour être plus précis, il rempli correctement le champ visible correspondant au nom de la personne, mais le champ caché devant contenir l'ID de la personne contient lui : array.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <label for="entreprise_contacts_list">Personne de contact</label>
    <input type="hidden" name="entreprise[contacts_list]" value="Array" id="entreprise_contacts_list" />
    <input type="text" name="autocomplete_entreprise[contacts_list]" value="nom prenom" id="autocomplete_entreprise_contacts_list" />
    Savez-vous ce qui pose problème ?

    Voici le contenu de mes différentes class.

    Dans EntrepriseForm.class.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $pph = new sfWidgetFormDoctrineJQueryAutocompleter(array(
                        'url' => '/autocomplete_pph',
                        'model' => 'PersonnePhysique',
                        'value_callback' => 'findOneById'
                    ));
            $this->setWidget('contacts_list', $pph);
    Dans action.class.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     public function executeAutocomplete(sfWebRequest $request) {
            $result = Doctrine_Core::getTable('PersonnePhysique')
                    ->findPersonneByName($request['q']);
            $temp = array();
            foreach ($result as $pph) {
                $temp[$pph['id']] = $pph->getNom()." ".$pph->getPrenom()." ".$pph->getPrenom2();
            }
            return $this->renderText(json_encode($temp));
        }
    Dans routing :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    autocomplete_pph:
      url: /autocomplete_pph
      param: { module: personne_physique, action: autocomplete}
    Merci d'avance, je vous avoue que là je sèche...
    ++

  2. #2
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Je n'ai jamais utilisé ce widget de cette manière, je ne peux donc pas répondre vraiment à ta question concernant ce problème d'initialisation que je n'ai jamais rencontré. De mon côté, j'utilise ce widget dans mes formulaires sans aucun problème en m'en servant comme d'un 'renderer'.

    Exemple pour un champ permettant de choisir une ville :
    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
    	$this->widgetSchema['town_id'] = new sfWidgetFormChoice(
    			array(
    			    'choices' => array(''),
    			    'renderer_class' => 'sfWidgetFormDoctrineJQueryAutocompleter',
    			    'renderer_options' => array(
    				'model' => 'Town',
    				'url' => url_for('town_autocompleted_list'),
    				'config' => "{max:$limit, minChars:$nbLetters, scroll:1, scrollHeight:300}"
    			    ),
    			    'label' => __("Ville")
    			),
    			array(
    			    'style' => 'width:400px'
    			)
    	);

  3. #3
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 37
    Par défaut
    Hello,
    merci pour ton exemple. Visiblement ces 2 déclarations ont l'air de revenir au même car j'ai les mêmes possibilités si j'essaie avec ton code.
    Par contre cela m'a permis de remarquer que le soucis ne vient pas de ce bout de code là...

    Il semblerait que le problème est que le retour du sfWidgetFo....... retournait parfois un array au lieu de l'id. Je n'ai pas compris pourquoi, mais le problème a pu être réglé par mon collègue en allant modifier directement dans le fichier sfWidgetFormJQueryAutocompleter.class.php.
    Voici le test ajouté dans le fichier et qui résout le souci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $value = is_array($value) && sizeof($value)>0 ? $value[0] : $value;
    Merci
    et a une prochaine.

  4. #4
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Si je puis me permettre une réflexion pratique (ou disons : issue de quelques années de pratique), si tu ne sais toujours pas ce qui cause le problème, je dirai que le problème a été dissimulé plutôt que résolu.

    NB1 : En fait, en relisant ton post initial, je remarque ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name="autocomplete_entreprise[contacts_list]"
    qui me fait penser que ta relation est de cardinalité n-n (contre 1-n dans mon exemple). Si c'est le cas, tu es potentiellement dans le cas d'un select 'multiple'. J'ignore comment doit fonctionner le widget autocompleter dans le cas n-n mais si mon hypothèse est correcte, forcer l'option 'multiple' à false devrait suffire - et c'est beaucoup moins risqué que la solution consistant à modifier la source du widget (avec risque d'effets de bord imprévus si la gestion du n-n est implémentée dans le widget).

    NB2 : si vraiment il faut modifier le code, mon conseil serait aussi de dériver une classe et de surcharger dans la classe fille.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/03/2014, 11h44
  2. Réponses: 2
    Dernier message: 20/11/2006, 20h22
  3. Réponses: 2
    Dernier message: 16/03/2006, 13h49
  4. [MySQL] Problème pour la modification d'un champ d'une table
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 09/02/2006, 17h17
  5. Temps écoulé pour la modification d'un fichier
    Par pouet33 dans le forum Langage
    Réponses: 4
    Dernier message: 06/09/2005, 12h41

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