1 pièce(s) jointe(s)
mon controller ne retourne pas d'objet http/ REsponse !
Bonsoir a tous
je tente de développer une fonction qui dois permettre à un user d'afficher les détails d'un de ses tickets d'incident avec diverses informations, ses commentaires ( échanges entre clients et technicien) et des documents ou images uploader par les clients (ou technicien)
ma fonction est très confuse car elle doit recuperer beaucoup de données.et bien qu'elle se termine par un return $this->render(...twig) (objet httpResponse ?); symfony m'affiche le message d'erreur suivant :calim2: :
Pièce jointe 588664
Voici mon controller:
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
|
<?php
namespace App\Controller;
use App\Entity\Comment;
use App\Entity\Document;
use App\Entity\Etat;
use App\Entity\Ticket;
use App\Form\CommentType;
use App\Form\TicketType;
use DateTime;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\User\UserInterface;
class TicketController extends AbstractController
{
/* d'autre méthodes...*/
/**
* @Route("/voir_detail/{id}", name="ticket_detail",
* requirements={"id": "\d+"}
* )
* @param $id
* @param Ticket $ticket
* @param Request $request
* @param EntityManagerInterface $em
* @param UserInterface $user
* @return Response
*/
public function voirDetail($id, Ticket $ticket, Request $request, EntityManagerInterface $em, UserInterface $user)
{
// on crée une instance de la class Comment pour pouvoir les afficher
$comment = new Comment();
$form = $this->createForm(CommentType::class, $comment);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if (!$comment->getId()) {
//on initialise la date de création du commentaire à la date du jour
$comment->setCreatedAt(new DateTime());
// on recupère le nom de celui qui a laissé le commentaire
$comment->setTicket($ticket);
$comment->setAuthor($user->getUsername());
$em->persist($comment);
$em->flush();
}
// On récupère les documents transmis
$documents = $form->get('documents')->getData();
// On boucle sur les documents
foreach ($documents as $document) {
// On génère un nouveau nom de fichier
$fichier = md5(uniqid()) . '.' . $document->guessExtension();
// On copie le fichier dans le dossier uploads
$document->move(
$this->getParameter('documents_directory'),
$fichier
);
// On stocke l'image dans la base de données (son nom en réalité)
$doc = new Document();
$doc->setName($fichier);
$ticket->addDocument($doc);
// on recupère le ticket par son id
$repo = $this->getDoctrine()->getRepository(Ticket::class);
$ticket = $repo->find($id);
return $this->redirectToRoute("ticket_detail", ['id' => $ticket->getId()]);
}
return $this->render('ticket/detail_ticket.html.twig', [
"ticket" => $ticket,
'commentForm' => $form->createView(),
]);
}
}
} |
Merci pour votre aide !!:)