Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/03/2011, 00h18   #1
Invité de passage
 
Inscription : novembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 35
Points : 3
Points : 3
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
cellvegi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 12h05   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 13h48   #3
Invité de passage
 
Inscription : novembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 35
Points : 3
Points : 3
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
cellvegi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 15h11   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 18h12   #5
Invité régulier
 
Inscription : septembre 2007
Messages : 37
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 37
Points : 5
Points : 5
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 :
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 :
1
2
3
4
 
public function executeAjaxChangeListe2 (sfWebRequest $request) {
$this -> form = new moduletestForm ();
}
le template de ton ajaxChangeListe2:
Code :
1
2
3
 
<?php echo $form['liste_2'] -> renderLabel () ?>
<?php echo $form['liste_2'] -> render() ?>
et enfin ton moduletestForm:
Code :
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
wind_of_o est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 16h08   #6
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 13
Points : 10
Points : 10
Merci Wind ! C'est exactement ce que je cherchais
gaara49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 09h16   #7
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Par défaut La fin du sujet !

Un coup de et tout sera parfait.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h18.


 
 
 
 
Partenaires

Hébergement Web