Bonjour à tous,
Je voudrais que le champ 'service' qui est un select soit prérempli par l'id du service qui est récupéré par le controller ci-bas...
J'ai essayé d'injecter la variable directement dans les paramètres du "create form" , rien n'y fait...
D'autre part, mon formulaire n'envoie rien en bdd alors que la requête revient comme étant correcte...
Merci d'avance pour votre expertise
MailContactController.php :
namespace App\Controller;
use App\Form\ContactFormType;
use App\Repository\ServicesRepository;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Routing\Annotation\Route;
#[Route('/contact-par-mail', name: 'app_contact_par_mail_')]
class MailContactController extends AbstractController
{
#[Route('/envoyer-mail/{id}/{slug}', name: 'envoyer_mail')]
public function envoyerMail($slug, MailerInterface $mailer, Request $request, ServicesRepository $servicesRepository, $id): Response
{
//Si l'on se trouve sur la page ou fiche d'un service
$service_a_contacter = $servicesRepository->find($id);
$idService = $service_a_contacter->getId();
//Recherche des adresses mails du service
$mail1 = $service_a_contacter->getMailService1();
$placeholder = "Indiquez ici ce qui vous amène à nous contacter sans oublier vos coordonnées complète et les données du véhicule concerné.";
$slug = $service_a_contacter->getSlug();
$form = $this->createForm(ContactFormType::class);
$contact = $form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$email = (new TemplatedEmail())
->from($contact->get('email')->getData())
->to($mail1)
->subject($contact->get('subject')->getData())
->htmlTemplate('emails/contact_service.html.twig')
->context([
'service' => $idService,
'mail' => $mail1,
'message' => $contact->get('message')->getData()
]);
dd($email);
$mailer->send($email);
$this->addFlash('success', 'Le mail a bien été envoyé au service demandé, nous vous répondrons dans les meilleurs délais.');
return $this->redirectToRoute('app_index', [
'slug' => $slug
]);
}
return $this->render('_partials/_modale-contact.html.twig', [
'mail1' => $mail1,
'service' => $service_a_contacter,
'idService' => $idService,
'form' => $form->createView()
]);
}
}
ContactFormType.php
namespace App\Form;
use App\Entity\Services;
use FOS\CKEditorBundle\Form\Type\CKEditorType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\NotNull;
class ContactFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('service', EntityType::class, [
'class' => Services::class,
'label' => 'Service contacté : ',
])
->add('subject', TextType::class, [
'label' => "Objet : ",
'constraints' => new NotBlank(),
'attr' => [
'class' => 'form-control',
'placeholder' => 'Décrivez-ici votre demande'
],
])
->add('email', EmailType::class, [
'label' => 'Votre e-mail :',
'constraints' => new NotBlank(),
'attr' => ['class' => 'form-control', 'placeholder' => 'Votre email est obligatoire !'],
])
->add('message', CKEditorType::class, [
'label' => 'Votre message + coordonnées de contact + données du véhicule concerné : ',
'constraints' => new NotBlank(),
'attr' => ['class' => 'form-control'],
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
]);
}
}