Я ищу лучший способ добиться «автоматического» ограничения маршрутизации вызовов Ajax. Прямо сейчас я делаю следующее:
/**
* @Secure(roles="IS_AUTHENTICATED_FULLY")
* @Route("/someRoute", name="someRoute")
* @Method("POST")
*/
public function eliminarFacturasAction(Request $request)
{
$response['success'] = false;
$status = 400;
if ($request->isXmlHttpRequest()) {
// needs to set $response values and $status=200 all the time
} else {
// needs to handle the exception and return Json response
}
return new JsonResponse($response, $status ?: 200);
}
Чтобы избежать этого, могу ли я использовать это вместо этого?
@Route("/someRoute",
name="routeName",
condition="request.headers.get('X-Requested-With') == 'XMLHttpRequest'"
)
Я использую jQuery только как JS-фреймворк, поэтому XMLHttpRequest
не будет проблемой. Какое исключение будет вызвано, если маршрут не будет выполнен через вызов Ajax? Могу ли я поймать его и показать сообщение пользователям? Или показать какую-то страницу 404?
Я нашел аналогичный вопрос здесь, но мне вообще непонятно
X-Requested-With
в своем контроллере и, если он не найден, выдать ошибку 412. Если вы часто используете это, вы можете написать свою собственную аннотацию справиться с этим. - person Xatoo   schedule 16.01.2015