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 :

http://localhost:3000

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!

1 réponse


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.