Profil - Développeur
+ +
{{developer.firstname}} + +
+Web Designer
+ +Biographie
++ {{ developer.biography }}
+ +diff --git a/web_app/.gitignore b/web_app/.gitignore index 87fca82..0c400d8 100644 --- a/web_app/.gitignore +++ b/web_app/.gitignore @@ -5,6 +5,7 @@ /.env.*.local /config/secrets/prod/prod.decrypt.private.php /public/bundles/ +/public/uploads/ /var/ /vendor/ /docker/ diff --git a/web_app/config/services.yaml b/web_app/config/services.yaml index 2d6a76f..b1ab9f0 100644 --- a/web_app/config/services.yaml +++ b/web_app/config/services.yaml @@ -4,6 +4,7 @@ # Put parameters here that don't need to change on each machine where the app is deployed # https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration parameters: + avatars_directory: '%kernel.project_dir%/public/uploads/dev_avatars' services: # default configuration for services in *this* file diff --git a/web_app/src/Controller/DeveloperController.php b/web_app/src/Controller/DeveloperController.php index 821b194..71a4708 100644 --- a/web_app/src/Controller/DeveloperController.php +++ b/web_app/src/Controller/DeveloperController.php @@ -57,23 +57,55 @@ public function new(Request $request, EntityManagerInterface $entityManager): Re #[Route('/profile', name: 'app_developer_profile', methods: ['GET', 'POST'])] public function profile(Request $request, EntityManagerInterface $entityManager): Response { - // dd($request); $developer = $this->getUser()->getDeveloper(); $form = $this->createForm(DeveloperType::class, $developer); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { + $avatarFile = $form->get('avatar')->getData(); + if ($avatarFile) { + $filename = uniqid() . '.' . $avatarFile->guessExtension(); + + $avatarFile->move( + $this->getParameter('avatars_directory'), + $filename + ); + } + // Enregistrer le nom du fichier dans l'entité + $developer->setAvatar($filename); + $entityManager->flush(); return $this->redirectToRoute('app_developer_profile', [], Response::HTTP_SEE_OTHER); } - return $this->render('developer/profile.html.twig', [ + + return $this->render('developer/manage/show.html.twig', [ 'developer' => $developer, 'form' => $form, ]); } + // #[Route('/profile', name: 'app_developer_profile', methods: ['GET'])] + // public function profile(Request $request, EntityManagerInterface $entityManager, DeveloperRepository $developerRepository): Response + // { + // // dd($request); + // $developer = $this->getUser()->getDeveloper(); + // $form = $this->createForm(DeveloperType::class, $developer); + // $form->handleRequest($request); + + // if ($form->isSubmitted() && $form->isValid()) { + // $entityManager->flush(); + + // return $this->redirectToRoute('app_developer_profile', [], Response::HTTP_SEE_OTHER); + // } + + // return $this->render('developer/profile.html.twig', [ + // 'developer' => $developer, + // 'form' => $form, + // ]); + // } + #[Route('/{id}/edit', name: 'app_developer_edit', methods: ['GET', 'POST'])] public function edit(Request $request, Developer $developer, EntityManagerInterface $entityManager): Response { @@ -102,4 +134,4 @@ public function delete(Request $request, Developer $developer, EntityManagerInte return $this->redirectToRoute('app_developer_index', [], Response::HTTP_SEE_OTHER); } -} +} \ No newline at end of file diff --git a/web_app/src/Form/DeveloperType.php b/web_app/src/Form/DeveloperType.php index d5fff8f..bc848e2 100644 --- a/web_app/src/Form/DeveloperType.php +++ b/web_app/src/Form/DeveloperType.php @@ -7,6 +7,7 @@ use App\Entity\User; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\FileType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; @@ -25,7 +26,16 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ->add('salary') ->add('biography') ->add('location') - ->add('avatar') + ->add('avatar', FileType::class, [ + 'label' => 'Avatar (Image file)', + 'required' => false, + 'mapped' => false, // Le champ n'est pas mappé à une propriété de l'entité + 'constraints' => [ + new \Symfony\Component\Validator\Constraints\Image([ + 'maxSize' => '2M', + ]), + ], + ]) // ->add('user', EntityType::class, [ // 'class' => User::class, // 'choice_label' => 'id', @@ -54,4 +64,4 @@ public function configureOptions(OptionsResolver $resolver): void 'data_class' => Developer::class, ]); } -} +} \ No newline at end of file diff --git a/web_app/templates/developer/manage/_form.html.twig b/web_app/templates/developer/manage/_form.html.twig index bf20b98..941161d 100644 --- a/web_app/templates/developer/manage/_form.html.twig +++ b/web_app/templates/developer/manage/_form.html.twig @@ -1,4 +1,5 @@ {{ form_start(form) }} - {{ form_widget(form) }} - -{{ form_end(form) }} +{{ form_widget(form) }} + +{{ form_end(form) }}. + diff --git a/web_app/templates/developer/manage/show.html.twig b/web_app/templates/developer/manage/show.html.twig index 4078ece..ac105ab 100644 --- a/web_app/templates/developer/manage/show.html.twig +++ b/web_app/templates/developer/manage/show.html.twig @@ -1,58 +1,195 @@ -{% extends 'base.html.twig' %} - -{% block title %}Developer{% endblock %} - -{% block body %} -
Id | -{{ developer.id }} | -
---|---|
Firstname | -{{ developer.firstname }} | -
Lastname | -{{ developer.lastname }} | -
Birthday | -{{ developer.birthday ? developer.birthday|date('Y-m-d') : '' }} | -
Gender | -{{ developer.gender }} | -
Experiences | -{{ developer.experiences }} | -
Salary | -{{ developer.salary }} | -
Biography | -{{ developer.biography }} | -
Location | -{{ developer.location }} | -
Avatar | -{{ developer.avatar }} | -
+ {{ developer.biography }}
+ +