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 29/08/2011, 18h53   #1
Invité de passage
 
Homme
Inscription : août 2011
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 12
Points : 2
Points : 2
Par défaut Frontend : filtres vers GeoJSON

Bonjour,

Je suis en train de développer une application qui affiche en frontend une carte de sites que l'on doit pouvoir sélectionner en fonction de filtres d'affichage, comme par exemple les départements.

L'affichage de la carte repose sur la bibliothèque javascript OpenLayers. Les données sont envoyées via une URL GeoJSON à une couche OpenLayers.Layer.GML, aucun souci tant que je n'essaie pas de les filtrer.

Par contre, je n'arrive pas à envoyer la collection d'objets filtrés vers l'action executeDataToGeoJson. Pire, je ne vois pas comment faire.

Auriez-vous une idée, quelque chose vers quoi m'orienter ?

Bonne fin de journée,

Éric
erdesc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2011, 19h07   #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
C'est dans l'écriture du contrôleur qui renvoie les données en json ?

Si oui, tu as un exemple dans le tutoriel JobeetJob de symfony.
__________________
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 01/09/2011, 16h18   #3
Invité de passage
 
Homme
Inscription : août 2011
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 12
Points : 2
Points : 2
Bonjour Michel,

Oui, j'ai regardé l'API qui est utilisée pour les services WEB de Jobeet. Par contre, le "filtre" des données est réalisé au niveau du modèle, à partir du profil de l'affiliate. Ce n'est pas du tout interactif.

Ce que je cherche à faire, c'est d'utiliser un filtre (FilterForm) pour sélectionner une catégorie ou un département, et de générer le GeoJSON à la volée.

J'y arrive dans le contrôleur index, avec un filtre classique et la réalisation du GeoJSON dans la vue, exactement comme pour un tableau, mais ce n'est pas DRY, ça fait une source HTML un peu épaisse avec le featurecollection, ce n'est pas évident à déboguer et je ne vois pas comment le tester.

J'aimerais envoyer mes filtres à un contrôleur dans un module API, et générer du GeoJSON à la volée en fonction de ces multiples filtres.

Quelle pourrait-être une bonne option ?

Merci et bonne journée,

Éric
erdesc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 19h02   #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


Pas très clair ton truc.

Si tu m'expliquais ce que tu veux sans me dire comment tu as essayé de le faire ?

Un truc qui pourrait t'aider, il est possible de passer (et conserver) des données dans la session (par l'objet sfUser), c'est ainsi que symfony conserve les données de filtre entre les différents affichage.
__________________
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 05/09/2011, 20h16   #5
Invité de passage
 
Homme
Inscription : août 2011
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 12
Points : 2
Points : 2
En effet, je vais essayer de t'expliquer ça un peu mieux.

Pour faire très bref, je voudrais utiliser une fonction, dans un module à part, qui génère le GeoJSON en fonction des paramètres qui lui sont envoyés à partir de différents modules.

Est-ce que ça te semble plus clair ?

Je vais creuser un peu l'utilisation des données de session, ça pourrait en effet parfaitement répondre à mon besoin.

Merci et bonne soirée,

Éric
erdesc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 18h54   #6
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
Est-ce que tu utilise "module" dans le sens symfony 1.4 du terme ?

Si oui, ceci ne va pas nécessairement être simple, en effet, les modules ne sont pas réellement conçu pour communiquer entre eux.

Il faudrait plutôt voir alors au niveau des entités.
__________________
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 07/09/2011, 18h18   #7
Invité de passage
 
Homme
Inscription : août 2011
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 12
Points : 2
Points : 2
Bonjour,

Oui, c'est dans ce sens que j'entendais module.

Je pourrais peut-être gérer mes différentes pages de frontend dans le même module, je vais essayer.

Je ne connais pas les entités, mais je viens de faire une recherche : c'est pour symfony2 ? J'utilise symfony1.4 pour le moment, car je trouve qu'il y a trop peu de documentation pour un néo-developpeur comme moi sur symfony2.

Merci à nouveau !

Éric
erdesc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 14h17   #8
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
Je bosse sur les deux versions, j'ai utilisé entité en lieu et place de modèle. Mais la notion reste la même en 1.4. C'est ce qui permet de traiter la base.

Il faut que les modules, en v1, ne traitent qu'un seul CRUD. Si tu commences à mélanger, vu que tu n'as qu'un contrôleur, cela va vite finir en pagaille.

Je pense que tu as intérêt à avoir un module qui s'occupe de répondre à ton interface GeoJSO. Ce module interrogeant les différentes entités (tables) qui répondrons chacune avec leurs données.
__________________
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 09/09/2011, 16h14   #9
Invité de passage
 
Homme
Inscription : août 2011
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 12
Points : 2
Points : 2
Bonjour Michel,

J'ai suivi ton conseil et concentré le tout en un seul module. Je m'approche de ce que je voulais, en envoyant les données à partir de différentes fonctions du contrôleur vers un partiel qui met en forme le GeoJSON.

J'arrive donc à filtrer les données. Ce n'est pas ce que j'imaginais, mais ça fonctionne.

Merci beaucoup !

Éric
erdesc 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 14h48.


 
 
 
 
Partenaires

Hébergement Web