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/04/2011, 15h52   #1
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 311
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 311
Points : 33
Points : 33
Par défaut case à cocher images, relation n-n

Bonjour,

j'ai un petit souci pour afficher une case à cocher d'images.
j'ai 2 tables liées par une relation n-n: une table "article" et une table "fabriquant". je voudrais afficher les logos de fabriquants à partir du module backend que j'ai généré pour "article" (action: ajouter nouvel article).

voici un aperçu de mon schéma 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
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
 
Fabriquant:
  connection: doctrine
  tableName: fabriquant
  actAs: { Timestampable: ~ }
  columns:
    nom_fabriquant:
      type: string()
    logo:
      type: blob()
Article:
  connection: doctrine
  tableName: produit
  actAs: { Timestampable: ~ }
  columns:
    fabriquant_id: 
      type: integer
    nom:
      type: string()
      notnull: true	  
	code:
	  type: string()
	..............
 
  relations:
    Fabriquants:
      class: Fabriquant
      refClass: ArticleFabrique
      local: article_id  
      foreign: fabriquant_id
      foreignAlias: Articles
 
ArticleFabrique:
  connection: doctrine
  tableName: articlefabrique
  columns:
    article_id:
      type: integer
      notnull: true  
    fabriquant_id: 
      type: integer
      notnull: true   
  relations:	  
    Article: 
      onDelete: RESTRICT
      local: article_id
      foreign: id		  
      foreignAlias: ArticleFabriques  
    Fabriquant: 
      onDelete: RESTRICT
      local: fabriquant_id
      foreign: id		  
      foreignAlias: ArticleFabriques
avec ce schéma, dans mon formulaire d'ajout d'article j'obtiens une liste à choix multiple des Id des fabriquants.
Mon objectif c'est de pouvoir afficher les logos de fabriquants à la place des id sous forme de case à cocher.

j'ai déjà intégré le code du Widget ci-dessous, qu'on m'avait passé sur ce forum, mais j'ai cette erreur:

Code :
1
2
500 | Internal Server Error | InvalidArgumentException
The "Article" model has to "Fabriquant" relation.
Code :
1
2
3
4
5
6
 
$this->setWidget( 'fabriquants_list', new sfWidgetFormDoctrineChoice( array(
                    'model' => $this->getRelatedModelName( 'Fabriquant' ),
                    'renderer_class' => 'mrWidgetFormSelectImageRadio',
                    'add_empty' => false
                        ) )) ;

qqu pourrait m'aider?

Merci!!!!!
flora806 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2011, 13h05   #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
Ton shema.yml corrigé.
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
shema.yml
Fabriquant:
  connection: doctrine
  tableName: fabriquant
  actAs: { Timestampable: ~ }
  columns:
    nom_fabriquant:
      type: string()
    logo:
      type: blob()
Article:
  connection: doctrine
  tableName: produit
  actAs: { Timestampable: ~ }
  columns:
    fabriquant_id: 
      type: integer
    nom:
      type: string()
      notnull: true	 
    code:
      type: string()
	..............
 
  relations:
    Fabriquants:
      class: Fabriquant
      refClass: ArticleFabrique
      foreignAlias: Articles
 
ArticleFabrique:
  connection: doctrine
  tableName: articlefabrique
  columns:
    article_id:
      type: integer
      notnull: true  
      primary: true
    fabriquant_id: 
      type: integer
      notnull: true 
      primary: true  
  relations:	  
    Article: 
      onDelete: RESTRICT
      local: article_id
      foreign: id		  
      foreignAlias: ArticleFabriques  
    Fabriquant: 
      onDelete: RESTRICT
      local: fabriquant_id
      foreign: id		  
      foreignAlias: ArticleFabriques
A ta place je mettrai une taille aux string() (mdr, c'est à double sens) pour éviter qu'il ne soient trop grand (aie encore) met les en dessous de 250.

Essaye avec ce schéma optimisé (tu peux encore supprimé éventuellement les lignes "par défaut" dans les relations
Code :
1
2
3
4
// Relation dans la liaison optimisée
    Fabriquant: 
      onDelete: RESTRICT
      foreignAlias: ArticleFabriques
Vérifie dans ton yml, j'ai l'impression qu'il y a des tabulations qui trainement. Le format yml nécessite obligatoirement l'utilisation exclusive d'espace.
__________________
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 06h03.


 
 
 
 
Partenaires

Hébergement Web