je ne connais pas ton parcours mais on ne peut pas se lancer dans un projet Symfony sans connaitre ..... un minimum Symfony. enfin, sans avoir eu un minimum d'auto formation ou de formation.
Version imprimable
je ne connais pas ton parcours mais on ne peut pas se lancer dans un projet Symfony sans connaitre ..... un minimum Symfony. enfin, sans avoir eu un minimum d'auto formation ou de formation.
tu peux publier le code source de l'entité User, de son formulaire d'inscription et la méthode d'inscription question de pouvoir voir en globalité ce qui est susceptible de produire cette erreur.
Après le composant symfony/security est totalement optionnelle, tu peux t'en passer surtout quand t'as une deadline serrée.
Je ne sais plus trop vue le suivi des conversations où tu en es ? mais si le problème est toujours le même concernant ton entity users je te conseil de mettre un type json_array car le type json n'existe pas en mysql.
et tu fais un à la racine de ton projet :
si tu laisses par défaut la génération avec make. Cela devrait rouler.Code:php bin/console doctrine:schema:update --force
Merci bcp pour l'aide que vous m'apportez, là je commence à me demander si je vais pas repartir sur un easyadmin en piochant dans la démo ce qu'il me faut
dukoid, j'ai appris qques bases de symfony en suivant une partie de cette chaine jusqu'au CRUD où j'au eu ce pb de createview, et une autre vidéo sur easyadmin
armel, voilà le source de mon entité user, je fais l'inscription à la mano dans phpmyadmin, c'est peut etre là que ça foire
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257 <?php namespace App\Entity; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Security\Core\User\UserInterface; /** * @ORM\Entity(repositoryClass="App\Repository\UserRepository") */ class User implements UserInterface { /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(type="string", length=180, unique=true) */ private $username; /** * @ORM\Column(type="json") */ private $roles = []; /** * @var string The hashed password * @ORM\Column(type="string") */ private $password; /** * @ORM\Column(type="string", length=255) */ private $avatar; /** * @ORM\Column(type="string", length=255) */ private $passion; /** * @ORM\Column(type="text") */ private $description; /** * @ORM\Column(type="string", length=512) */ private $signature; /** * @ORM\Column(type="boolean") */ private $actif; /** * @ORM\Column(type="string", length=255) */ private $mail; /** * @ORM\OneToMany(targetEntity="App\Entity\Post", mappedBy="auteur") */ private $posts; public function __construct() { $this->posts = new ArrayCollection(); } public function getId(): ?int { return $this->id; } /** * A visual identifier that represents this user. * * @see UserInterface */ public function getUsername(): string { return (string) $this->username; } public function setUsername(string $username): self { $this->username = $username; return $this; } /** * @see UserInterface */ public function getRoles(): array { $roles = $this->roles; // guarantee every user at least has ROLE_USER $roles[] = 'ROLE_USER'; dump($roles); // $roles[] = json_decode($roles); return array_unique($roles); } public function setRoles(array $roles): self { $this->roles = $roles; return $this; } /** * @see UserInterface */ public function getPassword(): string { return (string) $this->password; } public function setPassword(string $password): self { $this->password = $password; return $this; } /** * @see UserInterface */ public function getSalt() { // not needed when using the "bcrypt" algorithm in security.yaml } /** * @see UserInterface */ public function eraseCredentials() { // If you store any temporary, sensitive data on the user, clear it here // $this->plainPassword = null; } public function getAvatar(): ?string { return $this->avatar; } public function setAvatar(string $avatar): self { $this->avatar = $avatar; return $this; } public function getPassion(): ?string { return $this->passion; } public function setPassion(string $passion): self { $this->passion = $passion; return $this; } public function getDescription(): ?string { return $this->description; } public function setDescription(string $description): self { $this->description = $description; return $this; } public function getSignature(): ?string { return $this->signature; } public function setSignature(string $signature): self { $this->signature = $signature; return $this; } public function getActif(): ?bool { return $this->actif; } public function setActif(bool $actif): self { $this->actif = $actif; return $this; } public function getMail(): ?string { return $this->mail; } public function setMail(string $mail): self { $this->mail = $mail; return $this; } /** * @return Collection|Post[] */ public function getPosts(): Collection { return $this->posts; } public function addPost(Post $post): self { if (!$this->posts->contains($post)) { $this->posts[] = $post; $post->setAuteur($this); } return $this; } public function removePost(Post $post): self { if ($this->posts->contains($post)) { $this->posts->removeElement($post); // set the owning side to null (unless already changed) if ($post->getAuteur() === $this) { $post->setAuteur(null); } } return $this; } }
je suis sûr que c'est un truc tout con.
titux, tu as lu mon message privé ?
j'ai oublié de mentionner la chaine à laquelle je me réfère, c'est Grafikart https://www.youtube.com/watch?v=82yV...frqI9TcA8nMb29
à force de tester dans tous les sens et dans différents dossier, c'était pas trop ça et mon user.php en avait pris un coup, je l'ai remis d'aplomb, recréé la BDD et mis un peu de
du coup y a une petite avancée, j'ai créé un admin avec le code de mon UserController pas à la main dans phpmyadmin comme avant, mon champ roles en BDD contient :Citation:
php bin/console doctrine:schema:update --force
j'ai ajouté la ligne du post avant le form, contrairement au débutCitation:
a:1:{i:0;s:10:"ROLE_ADMIN";}
l'erreur a changé mais toujours pour la meme ligne
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 /** * Require ROLE_USER for only this controller method. * @Route("/create", name="post.create") * @return Response */ public function create(): Response { $post = new Post(); $form = $this->createForm(PostType::class, $post); return new Response($this->twig->render('pages/create.html.twig'), [ 'post' => $post, 'form' => $form->createView() ]); }
Citation:
Argument 2 passed to Symfony\Component\HttpFoundation\Response::__construct() must be of the type int, array given, called in /var/www/html/blog/src/Controller/PostController.php on line 52
le tableau est à passer en paramètre de la méthode render() et non comme paramètre de Response()
la classe User est Ok.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 /** * Require ROLE_USER for only this controller method. * Route("/create", name="post.create") * @return Response */ public function create(): Response { $post = new Post(); $form = $this->createForm(PostType::class, $post); return new Response($this->twig->render('pages/create.html.twig', [ 'post' => $post, 'form' => $form->createView() ]) ); }
Après si ça passe pas, essaies de fournir le code source de create.html.twig et de PostType
titus, j'ai regardé ton code.
c'est quoi le problème exactement ? (met moi l'url qui merde)
après, je ne sais pas comment tu créais un user ?
si tu n'encode pas le mot de passe il faut mettre plaintext !
Code:
1
2
3
4
5 security: encoders: App\Entity\User: algorithm: plaintext
-> return new Response($this->twig->render(..... -> :aie:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 /** * Require ROLE_USER for only this controller method. * @Route("/create", name="post.create") * @return Response */ public function create(): Response { $post = new Post(); $form = $this->createForm(PostType::class, $post); return $this->render('pages/create.html.twig', [ 'post' => $post, 'form' => $form->createView() ]); }
Dans ton entity User : moi je te conseil d'utiliser ce type là pour ton rôle
N'oublie pas de refaire un :Code:
1
2
3
4
5 /** * @ORM\Column(type="json_array") */ private $roles = [];
Et de plus, faire des générations d'un côté et des trucs à la main de l'autre, te complique la tâche surtout en début d'apprentissage du framework. Pourquoi n'utilises tu pas les fixtures pour tes INSERT en bdd ?Code:php bin/console doctrine:schema:update
Au moins tu peux tester correctement via doctrine. Et c'est plus simple.
Hello,
dukoid, j'ai 2 dossiers similaire mais l'un est plus avancé que l'autre, j'ai actualisé mon github sur le plus avancé, c'est dans ce fichier là que ça foire :
https://github.com/rxtxfr/wibrio/blo...Controller.php
ligne 52
j'ai tenu compte de la suppression du Response, mon create est maintenant identique à celui de dukoid mais je me retrouve avec l'erreur :
pour cette meme ligneCitation:
Return value of App\Controller\PostController::create() must be an instance of Symfony\Component\HttpFoundation\Response, string returned
Merci
linuxien_62, j'ai testé le json_array, ça voulait pas, mais dans tout mon bordel c'est peut etre normal.
je vais avancer en développant dans 1 seule branche et je verrais pour la sécu ensuite
Merci
je n'ai pas eu cette erreur.. je tombais bien sur le template
je re test avec ta nouvelle version
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 /** * Require ROLE_USER for only this controller method. * @Route("/create", name="post.create") * @return Response */ public function create(): Response { $post = new Post(); $form = $this->createForm(PostType::class, $post); return $this->render('pages/create.html.twig', [ 'post' => $post, 'form' => $form->createView(), ]); }
tu vires ce code là, pas besoin : (et tu adaptes les autres fonctions en conséquence)
comme t'as dit armel18, base toi sur symfony demo !Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 ** * @var Environment **/ private $twig; /** * @var PostRepository **/ private $repository; public function __construct(Environment $twig, PostRepository $repository) { $this->twig = $twig; $this->repository = $repository; }
autre chose : tu ne dois jamais toucher directement la base de donnée
toujours passer par les entités et la commande schema update --force
tu supprimes toutes tes tables de la base de donnée
et tu fais le schema update
ok, je vais modifier la demo pour l'adapter à ce qu'il me faut, je laisse tomber le tout fait main
Merci beaucoup pour le temps que vous m'avez consacrés.
@++
en regardant ton github, tu créais un article de blog sans auteur(user) alors qu'un auteur est rattaché à plusieurs articles: d'où la source de ton erreur.
J'ai fait un pull request sur ton github avec les corrections nécessaires entre autres l'inscription et l'authentification d'un utilisateur. Le lien pour s'inscrire est /user/register.
Après pour allez vite sur certaines tâches comme le CRUD sur une catégorie, tu peux utiliser la commande:
la commande te crée le formulaire, le controlleur, l'ajout et la suppression d'une catégorieCode:
1
2 php bin/console make:crud Category
Merci armel18
c'est tout de suite logique expliqué comme ça
si la commande CRUD permet d'accélérer le dev, je prends
par contre je comprends pas trop comment récupérer tes modifs sur github,
je testerais tout ça un peu plus tard ce soir
Merci
[Edit: c ok, j'ai récupéré les modifs]
Merci à tous pour votre aide, ça m'enlève une sacrée épine du pied :)
Question subsidiaire pour la sécu,
ce blog servira en interne dans 2 structures et je pense sans lien avec le net donc pas trop d'inquiétude.
mais j'aimerais le mettre en ligne chez ovh ou autre pour la famille et là, j'ai déjà eu l'expérience d'un piratage en étant auto hébergé
qu'en est-il ?