Dans le cadre d'un projet j'ai besoin d'utiliser l'admin generator de symfony 1.2 pour gerer des relations type N-N.
J'ai réussi plus au moins à faire ce que je voulais dans le cadre d'une relation N-N simple en rajoutant table_ref_list dans le display du generator.yml, mais par défaut cela affiche un select mutiple là ou j'aurais préféré des checkboxs, j'ai bien cherché dans la doc et j'ai pas trouvé grand chose pour changer ça :s
Mais le problème le plus important est de gérer une relation -n-n-n, à savoir que j'ai une table Player, Team, Competition, Team_Has_Competition et Player_Has_Team_Has_Competition.
Pour simuler une relation n-n, j'ai donc eu l'idée de mettre dans ma table Player_Has_Team_Has_Competition une foreign key directement sur Team_Has_Competition au lieu d'en avoir deux ( team et competition ) ce qui m'aurait amené à avoir une relation n-n-n non géré par symfony.
Voici donc le schema.yml
Code : Tout sélectionner
competition:
id:
name: { type: varchar(255), required: true }
is_active: { type: boolean, required: true, default: 0 }
player_has_team_has_competition:
id:
player_id: { type: integer, primaryKey: true, foreignTable: player, foreignReference: id, required: true }
team_has_competition_id: { type: integer, primaryKey: true, foreignTable: team_has_competition, foreignReference: id, required: true}
team_has_competition:
id:
team_id: { type: integer, primaryKey: true, foreignTable: team, foreignReference: id, required: true }
competition_id: { type: integer, primaryKey: true, foreignTable: competition, foreignReference: id, required: true }
player:
id:
firstname: { type: varchar(255), required: true }
lastname: { type: varchar(255), required: true }
age: { type: integer, required: true }
Le problème est donc que l'interface d'admin généré, me sort une erreur cf image : Si quelqu'un connait la solution je suis super preneur !
Au cas ou voici mon generator.yml :
Code : Tout sélectionner
generator:
class: sfPropelGenerator
param:
model_class: Player
theme: admin
non_verbose_templates: true
with_show: false
singular: ~
plural: ~
route_prefix: player
with_propel_route: 1
config:
actions:
_new: { label: Nouveau joueur }
_delete: { label: Supprimer }
_edit: { label: Editer }
_save: { label: Sauvegarder }
_list: { label: Liste }
fields:
lastname: { label: Nom }
firstname: { label: Prénom }
list:
title: Liste des joueurs
display: [=firstname, =lastname, age]
filter: ~
form: ~
edit:
title: Joueur : %%firstname%% %%lastname%%
new:
title: Nouveau joueur