Bonsoir à tous, j'ai donc réaliser une messagerie sur un serveur Synfony avec une vue sur React. On se connecte grâce au serveur Synfony avec l'adresse :
https://localhost:8000/
Puis la vue que j'ai réaliser avec React ce trouve sur l'adresse :
Mais je n’arrive donc pas à récupérer ma session sur mon serveur React. Je vous donne donc le code.
Donc coté serveur PHP Synfony
#[Route('/chat/{slug}', name: 'app_messagerie_chat')]
publicfunctionchat(Request$request, MessagesRepository$messagesRepository, ManagerRegistry$doctrine, $slug): Response
{
$entityManager = $doctrine->getManager();
$message = newMessages();
// On récupère le message
$rest_json = file_get_contents('php://input');
$_POST = json_decode($rest_json, true);
$title = $_POST['message'];
$user = 1;
$userRepo = $entityManager->getRepository(Annonces::class);
$id = $userRepo->findOneBy(["slug" => $slug]);
$recipient = $id->getUser();
$userRepo = $entityManager->getRepository(User::class);
$sender = $userRepo->find($user);
$recipient = $userRepo->find($recipient);
$message->setMessage($title);
$message->setChat(1);
$message->setSender($sender);
$message->setRecipient($recipient);
$message->setAnnonce($id);
$entityManager->persist($message);
$entityManager->flush();
$userRepo = $entityManager->getRepository(Messages::class);
$idposte = $userRepo->findOneBy(["sender" => $sender, "recipient" => $recipient, "annonce" => $id]);
header("Access-Control-Allow-Origin: http://localhost:3000/messages/{$slug}");
header("Content-Type: application/json");
returnnewJsonResponse($title);
}
Du coté react:
import { useRouter } from"next/router";
import { useState, useEffect } from'react';
functionApp() {
constrouter=useRouter();
const [message, setMessage] =useState('')
const [resultMessage, setResultMessage] =useState('')
const [isOpen, setIsOpen] =useState(false)
constid=router.query.id;
consthandleClick=async (event) => {
setIsOpen(true)
setMessage("");
event.preventDefault()
try {
awaitfetch(https://localhost:8000/messagerie/chat/${id}
, {
method:'POST',
body:JSON.stringify({
message:message,
send:1,
}),
})
.then((respose) => {
if (respose.ok) {
returnrespose.json()
}
thrownewError('error')
})
.then((data) => {
if (data.result) {
setResultMessage(data.result)
setMessage('')
} else {
//set error
}
})
} catch (error) {
console.log(error.message)
}
}
consthandleChange= (event) => {
setMessage(event.target.value);
};
return (
<>
<liclassName="mb-3">
<input
type="text"
class="form-control form-control-lg"
id="exampleFormControlInput1"
placeholder="Type message"
onChange={handleChange}
value={message}
/>
</li>
<buttonclass="btn btn-link"onClick={handleClick}><iclass="fa fa-paper-plane-o"aria-hidden="true"></i></button>
</>
)
}
exportdefaultApp
Merci de votre aide!
Je te renvois sur cette vidéo car il y a pas mal de raison qui peuvent faire que ça ne marche pas.
Mas il faut que tu regarde ton inspecteur (onglet réseau) pour déboguer la communication et voir si les cookies passent bien.