Я пытаюсь вызвать сервисный метод нажатием кнопки со следующим кодом:
Веточка HTML:
<input type="button" value="Ready Up" onclick="ready('{{ path('ready', {'playerName' : name}) }}')">
Javascript:
function ready(path) {
fetch(path, {method : 'put'})
.then(function (response) {
console.log(response);
});
}
Контроллер Symfony:
/**
* @Route("/api/player/ready", name="ready")
* @return Response
*/
public function toggleReady($playerName) {
$this->gameCacheService->readyUp($playerName);
return new Response('test');
}
Нажатие на кнопку приводит к следующему исключению:
Uncaught PHP Exception RuntimeException: "Controller "App\Controller\PlayerController::toggleReady()" requires that you provide a value for the "$playerName" argument. Either the argument is nullable and no null value has been provided, no default value has been provided or because there is a non optional argument after this one."
Однако сгенерированный URL выглядит так, как будто он действительно предоставляет значение для $ playerName:
/api/player/ready?playerName=Testname
Что вызывает такое поведение?
Окончательный HTML-код, отображаемый в браузере:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="button" value="Ready Up" onclick="ready('/api/player/ready?playerName=Testname')">
<script>
function ready(path) {
fetch(path, {method : 'put'})
.then(function (response) {
console.log(response);
});
}
</script>
</body>
</html>