Можете ли вы объяснить мне, почему запрос Axios не работает в моем приложении Symfony?
Я использую запрос Axios с React следующим образом:
handleSubmit = () => {
axios.put('/families/' + this.props.familyId + '/edit',{
parents: "test"
})
.then(response => {
alert('Family has been modified');
})
};
Мой контроллер:
/**
* Edit Family
*
* @Route("families/{id}/edit", name = "family_edit")
* @Method(methods = {"PUT"})
* @param Request $request
* @param $id
*/
public function editFamilyAction(Request $request, $id)
{
$parents = $request->get('parents');
...
}
Но $ Родители равны нулю ...
Что происходит, мне где-то нужна конфигурация?
Нужна помощь, пожалуйста!
Денис
У меня ошибка 500, потому что я не возвращаю оператор в своей функции. Я не возвращаю заявление, потому что моя функция еще не завершена. Это проблема? Отлаживаю в PhpStorm.
Я не совсем уверен. Тем временем вы можете вернуть фиктивные данные, чтобы исключить, что проблема не в этом.
Хорошо, я попробовал, и на вкладке "Сеть" не было ошибок ...
Возможный дубликат Публикация объектов JSON в Symfony 2
AXIOS отправляет запрос в виде закодированного тела json, но вы обращаетесь к (пустым) заголовкам данных формы. Посмотрите на stackoverflow.com/questions/9522029/…





Это просто:
/**
* @Route("/families/{id}/edit", name = "family_edit", methods = {"PUT"})
* @param Request $request
* @param $id
*/
public function editFamilyAction(Request $request, $id)
{
$data = $request->getContent();
$data = json_decode($data);
$parents = $data->parents;
// do your stuff
}
Обратите внимание, что если вы используете Symfony 4, аннотация метода устарела, вместо этого вы должны правильно настроить аннотацию Route, как я сделал в приведенном выше коде.
Ух, кажется, работает! спасибо тебе большое, парень !!
Объясните, пожалуйста, в чем моя ошибка?
Я просто безуспешно скопировал / вставил код команды. Позвольте мне объяснить код:
Реагировать:
handleSaveDiagnostic = () => {
axios.put('/admin/api/diagnostic/update-diagnostic/'+ this.state.currentDiagnostic.id, {
'newDiagnostic': this.state.currentDiagnostic
})
.then(response => {
alert('Family has been modified');
this.loadCounters();
})
};
Контроллер:
* @Route("/update-diagnostic/{diagnostic}", name = "update_diagnostic")
* @Method(methods = {"PUT"})
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @param \AppBundle\Entity\Diagnostic $diagnostic
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function updateDiagnosticAction(Request $request, Diagnostic $diagnostic) {
$newDiagnostic = $request->get('newDiagnostic'); (is working!)
...
}
Какая разница, пожалуйста, у него он работает, а мне нужен $ request-> getContent ?? !!
Это не похоже на ответ. Скорее второй вопрос? Большое нет-нет здесь.
Если вы посмотрите на запрос на вкладке «Сеть» в своих инструментах разработчика, не отображаются ли в нем какие-либо ошибки?