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 :

ajax & sfwidgetformchoice


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 35
    Par défaut ajax & sfwidgetformchoice
    Salut
    je suis debutant en symfony et j'ai 2 question :
    1- j'ai un formulaire dans lequel j'ai 2 composant sfwidgetformchoice dépendants cad la liste des valeurs du 2eme sfwidgetformchoice dépend de la valeur sélectionnée dans le 1er , alors comment je peux faire un appel ajax qui va charger automatiquement le 2eme sfwidgetformchoice ?

    2- comment afficher la date en format francais ?

    merci d'avance

  2. #2
    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
    Regarde dans le dossier plugin, message les plugins recommandés.

    Tu as un plugin : sfFormExtraPlugin qui à un widget qui permet de mettre simplement en œuvre deux listes liées.

    La question sur les dates est trop floue pour donner une réponse précise. Il y a des options sur les widget qui permettent de définir les affichages, il y a des widget capable de le faire en fonction de la culture et/ou de la langue de l'application, des fonctions PHP qui permettent de formater les dates à l'affichage.

    Plein de solutions à une question très ouverte.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 35
    Par défaut
    Bonjour,
    merci Bcp d'abord M.Michel Rotta
    j'ai vu la liste des widgets du plugin dont vous avez parlez mais j'ai pas trouve ce que je cherche. est ce que vous pouvez me préciser le composant?
    concernant l'affichage du date : je me demande si il y a une propriete ou bien une methode pour afficher <td><?php echo $var->getDatenaissance() ?></td> en format francais
    merci encore une fois

  4. #4
    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
    Sauf erreur, c'est le : sfWidgetFormSelectDoubleList qui devrait te convenir.

    Pour la question sur les dates je vais faire une réponse mi figue mi raisin !

    Ce n'est pas possible, quoique !

    En gros, tu as trois possibilité. De la moins bonne (mais plus simple) à le meilleur (mais plus compliquées !) :

    1) dans ton template, tu utilises les fonctions de PHP de formatage de date.

    2) dans ton modèle (lig/modeles/doctrine/maTable.class.php) tu crées une méthode getDatenaissanceFormat() qui, à partir de getDatenaissance va retourner la date formatée.

    3) la même sauf que tu lui rajoute un argument qui permet de préciser le format à utiliser (et/ou la culture à utiliser).

    L'avantage de la troisième méthode est qu'elle peut être facilement utilisée par plusieurs templates. Tu peux facilement factoriser le code si tu vas travailler sur plusieurs entités (tables) différentes.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 44
    Par défaut
    Citation Envoyé par cellvegi Voir le message
    Salut
    1- j'ai un formulaire dans lequel j'ai 2 composant sfwidgetformchoice dépendants cad la liste des valeurs du 2eme sfwidgetformchoice dépend de la valeur sélectionnée dans le 1er , alors comment je peux faire un appel ajax qui va charger automatiquement le 2eme sfwidgetformchoice ?
    Tu peux essayer ce genre de chose:

    dans ton template:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <script type="text/javascript">
    jQuery ().ready (function () {
    	jQuery ("#liste_1_id").change (
    		function (event) {
    			var liste_1_id = jQuery (event.target).val ();
    			jQuery.post (				
              		'<?=url_for ('moduletest/ajaxChangeListe2') ?>',
              		{ajaxChangeListe1: liste_1_id},
              		function (data){
              			jQuery ("#widget_liste_2").empty ();
              			jQuery ("#widget_liste_2").append (data);
              		}
            	);
    		}
    	);
    });
    </script>
     
    <form ...>
     
    <div id="widget_<?php echo $form['liste_1'] -> renderId () ?>">
    <?php echo $form['liste_1'] -> renderLabel () ?>
    <?php echo $form['liste_1'] -> render() ?>
    </div>
     
    <div id="widget_<?php echo $form['liste_2'] -> renderId () ?>">
    <?php echo $form['liste_2'] -> renderLabel () ?>
    <?php echo $form['liste_2'] -> render() ?>
    </div>
     
    </form>
    dans ton action:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public function executeAjaxChangeListe2 (sfWebRequest $request) {
    $this -> form = new moduletestForm ();
    }
    le template de ton ajaxChangeListe2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <?php echo $form['liste_2'] -> renderLabel () ?>
    <?php echo $form['liste_2'] -> render() ?>
    et enfin ton moduletestForm:
    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
     
    public function configure () {
     
    // récupération des données transmises
    $aParameterHolder = sfContext::getInstance () -> getRequest () -> getParameterHolder () -> getAll ();
     
    // voir si c'est une requète ajax ou un submit de l'utilisateur
    if (isset($aParameterHolder['ajaxChangeListe1'])) {
    $Liste1Id = $aParameterHolder['ajaxChangeListe1'];	
    } else if (isset($aParameterHolder['moduletest']['moduletest_liste_1_id'])){
    $Liste1Id = $aParameterHolder['moduletest']['moduletest_liste_1_id'];	
    } else {
    $Liste1Id = 1; // valeur par defaut
    }
     
    foreach ($aListe2 = Doctrine::getTable ('Liste2') -> getById1($Liste1Id) as $oListe2) {
    $aChoicesListe2[$oListe2-> id] = $oListe2 -> nom;
    }
     
    /* et apres tu fais ta création de widget pour Liste1 et Liste2 en utilisant $aChoicesListe2 pour Liste2*/
     
    }
    Tu peux t'inspirer de cet exemple, ca fonctionne chez moi. Par contre je ne sais pas si c'est très conforme à l'esprit de Symfony

    Wind

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Par défaut
    Merci Wind ! C'est exactement ce que je cherchais

  7. #7
    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 La fin du sujet !
    Un coup de et tout sera parfait.

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