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 08/09/2011, 14h37   #1
Invité de passage
 
Homme Nicolas
Développeur Web
Inscription : août 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Localisation : France

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

Informations forums :
Inscription : août 2011
Messages : 7
Points : 0
Points : 0
Par défaut Appel à une action via javascript

Bonjour a tous,

Travaillant sur symfony depuis 1 mois, je souhaiterais pouvoir appeler une action en passant par une fonction javascript.

J'ai essayé de suivre sans succès ce tuto qui permet de changer le texte d'un bouton après avoir récupérer sa valeur dans une fonction du type executeMyAction.
http://lenybernard.blogspot.com/2010...et-jquery.html

Lorsque je clique sur le bouton, je passe bien dans ma fonction javascript que voici, déclaré dans un fichier a part (web/frontend/js/myjs.js)

Code :
1
2
3
4
5
6
7
8
9
10
 function myAjaxFunction(){
            alert("test");
            var value = "toto";
            jQuery.post("job/updatecvinterest",
            {myParam : value},
            function(data)
            {
                $("#mybutton").attr("value",data);
            });
        }
qui est censé appeler la fonction executeUpdatecvinterest du module job que j'ai déclaré dans le fichier frontend/modules/job/actions/actions.class.php.

Au lieu de passer par cette fonction, le texte du bouton devient le contenu du fichier /frontend/modules/job/templates/indexSuccess.php

J'ai bien essayé de créer un fichier /frontend/modules/job/templates/updatecvinterestSuccess.php mais ca n'a pas fonctionné non plus.

Est ce que je dois créer un nouveau module afin de pouvoir accéder à l'index de ce dernier ?

Est ce que quelqu'un pourrait éclairer ma lanterne s'il vous plait !?

Merci , a bientot
nico006 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 14h51   #2
Membre chevronné
 
Avatar de Herode
 
Développeur Web
Inscription : mars 2005
Messages : 771
Détails du profil
Informations personnelles :
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2005
Messages : 771
Points : 790
Points : 790
Tu peux nous montrer les routes correspondantes de ton routing.yml ?
Herode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 14h53   #3
Invité de passage
 
Homme Nicolas
Développeur Web
Inscription : août 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Localisation : France

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

Informations forums :
Inscription : août 2011
Messages : 7
Points : 0
Points : 0
Bonjour Herode, merci pour ta réponse.

Voici le fichier routing.yml

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
 # default rules
homepage:
  url:   /:sf_culture
  param: { module: home, action: index }
 
# generic rules
# please, remove them by adding more specific rules
default_index:
  url:   /:sf_culture/:module
  param: { action: index }
 
default:
  url:   /:sf_culture/:module/:action/*
 
 
sf_guard_signin:
  url:   /:sf_culture/login
  param: { module: sfGuardAuth, action: signin }
 
sf_guard_signout:
  url:   logout
  param: { module: sfGuardAuth, action: signout }
 
sf_guard_password:
  url:   request_password
  param: { module: sfGuardAuth, action: password }
Je viens de créer la fonction executeIndex de mon module Job (je n'en avais pas encore besoin) et le résultat est correct !
Le probleme c'est que je ne veux pas faire mes modifs dans cette fonction qui pourrait m'etre utile par la suite......

Je ne comprends pas trop...

J'ai fait afficher sur le bouton la valeur de $request->getPathInfo() et j'obtiens : /fr/job .
L'action semble ignorée ainsi que les éventuels parametres que je ne peux donc pas récupérer....

Est ce qu'il faut que je rajoute une ligne dans le fichier routing.yml ?
nico006 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 15h34   #4
Membre chevronné
 
Avatar de Herode
 
Développeur Web
Inscription : mars 2005
Messages : 771
Détails du profil
Informations personnelles :
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2005
Messages : 771
Points : 790
Points : 790
Je ne vois pas clairement pourquoi la route default_index reconnaitrait l'URL http://monsite.truc/fr/job/monaction. Mais le fait est que j'utilise le moins possible les routes par défaut. Elles figurent en fin de fichier après toutes les routes que je veux reconnaitre et qui sont explicitement décrites. Parfois, je n'ai même pas de routes par défaut.

Avantages :
- c'est explicite
- pas d'ambiguïtés
- tu peux paramétrer tes routes bien plus finement (par exemple : réserver une route à la méthode POST, contrôler que l'argument id est bien numérique, etc.)

Donc oui, à ta place, en attendant de comprendre exactement ce qui cloche, je déclarerais une route pour chaque action.
Herode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 16h35   #5
Invité de passage
 
Homme Nicolas
Développeur Web
Inscription : août 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Localisation : France

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

Informations forums :
Inscription : août 2011
Messages : 7
Points : 0
Points : 0
Re Herode,

N'étant pas tres a l'aise sur les routes, je ne vois pas trop la tete qu'aurait celle associée à updatecvinterest dans mon cas.
Est ce que je dois également rajouter les paramètres dont j'aurais besoin pour mon action ?

Quoi qu'il en soit j'ai continué à faire des tests et si je mets le chemin en entier dans le $.post, c'est a dire

Code :
$.post("http://monsite.truc.fr/job/index.php/fr/job/updatecvinterest", ....
, j'appelle bien l'action executeUpdatecvinterest de mon module job.

Est ce que tu aurais une explication ? (surtout de pourquoi je dois rajouter /job/index.php avant /fr )

Merci pour ton attention en tous cas !

A bientot
nico006 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 19h59.


 
 
 
 
Partenaires

Hébergement Web