Bonjour, c'est mon premier post ici, et j'en profite donc pour remercier tous les auteurs de tutos sf2 et sf1, ainsi qu'aux principaux posteurs sur ce forum où Google m'aura bien souvent envoyé, dev très junior de mon état.
Paradoxalement je connais Sf2 bien mieux que Sf1, ayant fait mon stage de fin de formation sur le premier. Sauf que dans mon vrai boulot de fraîchement diplômé, je dois bosser sur Sf1 qui m'apparait plus obscur, et, je trouve, moins bien fait.
Je savais donc que j'allais avoir du mal à faire connaissance, et là j'avoue en perdre mon latin!
Je n'arrive pas à mettre en place le lien le plus simple qui soit entre sfGuardUser et un sfGuardUserProfile, en utilisant sfDoctrineGuard 5.0 et sf 1.4.15.
J'ai essayé de m'inspirer de ce vieux tuto, ainsi que de celui-ci, plus récent. Ce dernier semble indiquer que sfGuardUser recherche automatiquement une classe sfGuardUserProfile.
Je procède donc à partir d'une installation vierge de symfony, étape par étape:
- generate:project
- generate: app frontend, puis backend
- modification du config/ProjectConfiguration.class.php pour activer sfGuard
- je crée un schema.yml tout basique avec pour seule classe, ma classe sfGuardUserProfile, avec pour alias "Profile":
- je fais un "symfony doctrine:build --all --and-load --no-confirmation" .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 sfGuardUserProfile: columns: sf_guard_user_id: integer address: string(255) city: string(255) zipcode: string(5) relations: User: class: sfGuardUser local: sf_guard_user_id foreign: id type: one foreignType: one foreignAlias: Profile
- j'édite le apps/backend/config/settings.yml avec
enabled_modules: [default, sfGuardAuth, sfGuardUser]
- j'édite le apps/backend/config/app.yml avec:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 all: .settings: csrf_secret: 9f266c39f229a887ac215d9f76b2b268fcb115fb enabled_modules: [default, sfGuardAuth, sfGuardUser]
- je copie/colle mon module sfGuardUser dans apps/backend/modules et j'édite le generator.yml en rajoutant juste l'alias "Profile" aux valeurs par défaut:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5sf_guard_plugin: profile_class: sfGuardUserProfile profile_field_name: sf_guard_user_id routes_register: false
Et là c'est le drame, j'ai bien accès à l'administration autogénérée, mais dès que je veux créer un utilisateur depuis ma page "/backend_dev.php/sfGuardUser" j'obtiens un magnifique:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 form: class: sfGuardUserAdminForm display: "User": [first_name, last_name, email_address, username, password, password_again, Profile]
"Widget "Profile" does not exist."
Pourtant, si je fais un "doctrine:data-load" sur un fixture.yml, les informations sont bien rentrées dans la base sur les deux tables, sfGuardUser et sfGuardUserProfile.:
Je sèche complètement. J'ai fait et refait toutes ces étapes un grand nombre de fois en pure perte. Aurais-je oublié un truc bête quelque part?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 sfGuardUser: User_admin: first_name: John last_name: Doe email_address: john.doe@gmail.com username: admin password: admin is_super_admin: true Groups: [Group_admin] Profile: city: superville zip_code: code address: super rue sfGuardGroup: Group_admin: name: admin description: Administrator group Permissions: [Permission_admin] sfGuardPermission: Permission_admin: name: admin description: Administrator permission
Partager