Поэтому я хочу вызвать контроллер в Symfony, передав свой маршрут, объявленный в rout.yaml, с помощью функции выборки jquery, и я хочу передать переменные из jquery в контроллер. Как я могу это сделать ?
Вот мой JQuery. Я называю этот маршрут и хочу передать ему две переменные сверху.
var longitudde = lonLat[0];
var latudde = lonLat[1];
fetch('/weather_request)
.then(function(response) {
return response.json();
}).then(function(json) {
// ...
});
Чтобы передать эти переменные вways.yaml в Symfony:
weather_request:
path: /weather_request
controller: App\Controller\WeatherController::weather
methods: [get]
defaults:
longitude: longitude
latitude: latitude
Чтобы окончательно передать их в функцию погоды в Weather Controller:
public function weather($longitude, $latitude)
{
return $this->render('weather/index.html.twig', ['weatherInfos' => $this->weatherService->getWeather($longitude, $latitude)]);
}
Так как же я могу передать долготу и широту от jquery fetch к контроллеру здесь? Я новичок в Symfony, поэтому могу ошибаться.
2 ответа
для меня я использую это так: в Js:
const obj = {
"longitudde":lonLat[0],
"latudde":lonLat[1]
}
fetch('/weather_request',
{
method:'POST',
headers: {
'Content-Type':'application/json'
},
body:JSON.stringify(obj)
}).then(resp => {
return resp.json();
}).then(res => {
console.log(res)
//...
})
}
В аннотации маршрута Controller, но вы можете использовать с Route.yaml:
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
/**
* @Route("/weather_request", methods={"POST"})
*
*/
public function weather(Request $request)
{
$data = json_decode($request->getContent());
$longitude = $data->longitudde;
$latitude = $data->latudde;
return $this->render('weather/index.html.twig',
[
'weatherInfos' => $this->weatherService
->getWeather($longitude, $latitude)
]);
}
Я думаю, это может помочь вам:
$.ajax({
url: '{{path('weather_request')}}',
type: 'GET',
data: {
longitude: lonLat[0],
latutide: lonLat[1],
},
success: function(response) {
//called when successful
},
error: function(e) {
//called when there is an error
//console.log(e.message);
}
});
В вашем контроллере:
use Symfony\Component\HttpFoundation\Request;
public function weather(Request $request)
{
if ($request->isXMLHttpRequest()) {
$longitude = $request->query->get('longitude');
$latutide = $request->query->get('latutide');
}
}
Новые вопросы
php
PHP является широко используемым, высокоуровневым, динамическим, объектно-ориентированным и интерпретируемым языком сценариев, в первую очередь предназначенным для серверной веб-разработки. Используется для вопросов о языке PHP.