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 09/02/2011, 14h39   #1
Invité de passage
 
Inscription : mai 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 7
Points : 1
Points : 1
Par défaut Filtre dans un formulaire imbriqué (action: edit)

Bonjour,

J'utilise symfony 1.4 avec le plugin: ahDoctrineEasyEmbeddedRelationsPlugin

Je dois faire un formulaire contenant des formulaires imbriqués.

Mais il y a énormement de formulaires imbriqués, et pour bien faire il faudrait que je puisse mettre un filtre afin de n'afficher que certains des formulaires imbriqués.

Donc voici mon schéma:

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
Campaigns:
  connection: doctrine
  tableName: campaigns
  columns:
    campaign_dbid:
      type: integer(4)
      fixed: false
      unsigned: true
      primary: true
      autoincrement: true
    campaign_name:
      type: string(255)
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false
    campaign_mail:
      type: string(255)
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false
   relations:
     CampaignsMessages:
      local: campaign_dbid
      foreign: cm_campaign_dbid
      type: many
 CampaignsMessages:
  connection: doctrine
  tableName: campaigns_messages
  columns:
    cm_id:
      type: integer(4)
      fixed: false
      unsigned: true
      primary: true
      autoincrement: true
    cm_campaign_dbid:
      type: integer(4)
      fixed: false
      unsigned: true
      primary: false
      notnull: true
      autoincrement: false
    cm_language_id:
      type: integer(4)
      fixed: false
      unsigned: true
      primary: false
      notnull: true
      autoincrement: false
    cm_msg_name:
      type: string(255)
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false
    cm_msg_value:
      type: string()
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false
  relations:
    Campaigns:
      local: cm_campaign_dbid
      foreign: campaign_dbid
      type: one
J'aimerais donc pouvoir filtrer les formulaires imbriqués sur base du cm_language_id... Avez vous une idée de comment je pourrais procéder?

J'ai déjà pas mal cherché sur google mais à part des sujets sur les filtres imbriqués je n'ai pas trouvé grand chose....

Merci d'avance pour votre aide
morfessa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 10h17   #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
Il manque des informations sur où tu souhaiterais cela, formulaire simple ou formulaire auto-généré d'admin.

Et les modifications que tu as apportés à ton objet form.

Ensuite (ou plutôt avant), il serait souhaitable de faire un tour sur le sous forum doctrine et de regarder les préconisations pour la mise en place du schéma, le tiens pourrait être optimisé et plus lisible, pour toi (les "s" notamment) et pour doctrine (les conventions de nommage des clefs).
__________________
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 10/02/2011, 14h48   #3
Invité de passage
 
Inscription : mai 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 7
Points : 1
Points : 1
Tu as raison je vais faire l'effort d'aller voir les conventions de nommages.

Pour ta première question il s'agit d'un formulaire autogénéré d'admin. Mais si c'est trop compliqué de faire cette personnalisation dans l'admin autogénéré, je peux refaire un module manuel...

Si tu souhaites plus d'informations n'hésites pas à les demander
morfessa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 15h08   #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
Pour la création d'un enregistrement maître, c'est infaisable quelque soit le système utilisé.

Il faut donc un formulaire qui permette de créer la base de l'enregistrement maître (nom, mail) et renvoie sur le formulaire de modification (pour l'enregistrement juste créé).

J'ai réfléchi (après le premier message)(si si, j'y arrive). Et je suppose qu'il va falloir intégrer dans ton form un form de filtre pour les formulaires embarqués. Ceci ne me semble pas compatible avec un module généré par l'admin.

En fait ceci va nous faire un form particulièrement compliqué vu que l'on devrait avoir deux form embarqués l'un dans l'autre (un pour modifier ls enregistrement, un pour le filtre des embed), ce qui n'est pas possible.

Donc il me semble qu'il faudrait, au moins trois form (et laisser tomber l'embed). Un pour l'enregistrement maître, un pour le filtre, un pour les sous enregistrement. Et après réflexion, je me demande si tu n'as pas intérêt à faire un form par enregistrement, indépendant les uns des autres.

Base toi sur le code que tu peux trouver dans le cache d'un form d'admin pour créer le code qui va gérer les enregistrement embed.

Un cadeau en prime, le shema optimisé (mais non commenté) :
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
 
Campaign:
  connection: doctrine
  tableName: campaigns
  columns:
    name:
      type: string(255)
      notnull: true
    mail:
      type: string(255)
      notnull: true
 CampaignMessage:
  connection: doctrine
  tableName: campaigns_messages
  actAs:
    I18n:
      fields: [name, value]
  columns:
    campaign_id:
      type: integer
    name:
      type: string(255)
      notnull: true
    value:
      type: string()
      notnull: true
  relations:
    Campaigns:
      foreignAlias: CampaignMessages
Ce qui va créer trois tables dont une avec la traduction des messages de la Campaig. Je ne suis pas très sur de comprendre la notion de messages pour une campagnes. Il faudra peut-être remonter au niveau de la structure sémantique des tables.
__________________
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 11/02/2011, 14h50   #5
Invité de passage
 
Inscription : mai 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 7
Points : 1
Points : 1
Oooooh!

Merci beaucoup pour la vitesse et la qualité de ta réponse!

Je pense que je vais implémenter ta solution des trois formulaires. Le formulaire de filtre comportera un champ hidden correspondant à l'ID de la campagne en cours d'édition (voir je suppose que je pourrai directement récupérer l'id dans la requête de la page), ainsi que les champs de filtres classiques.

J'épprouve une certaine réticence à faire un form par enregistrement, car si un jour on souhaite ajouter des données supplémentaire et faire un filtre plus poussé, ça risquerait de compliquer les choses... non?

Cependant avec la technique des trois formulaires (ou des formulaires indépendants), je pense qu'il sera plus compliqué de permettre l'edition de par exemple 5 messages en même temps et l'enregistrement de ceux ci en une fois... Ca se ferait plutot message par message.... non? Or d'un point de vue purement ergonomique ce serait désastreux...

Merci encore pour ton schéma et tes conseils avisés!
morfessa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 14h57   #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
Je ne pense pas qu'un form par enregistrement sera plus compliquer à maintenir qu'un embed. Les deux seront hermétique si quelqu'un intervient par après, a toi de bien documenter maintenant.

Par contre, effectivement, côté utilisateur, le fonctionnement va différé fortement. Ce qui peut influencer définitivement vers l'une où l'autre des solutions.

Hors ces solutions, il reste la possibilité de travailler avec une grosse couche de javascript...
__________________
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 06h24.


 
 
 
 
Partenaires

Hébergement Web