Почему нет записи в БД через API AngularJS и Symfony 4?

В общем идет post запрос с Angular в Symfony с параметрами. Но идет ошибка "Call to a member function setName() on null". Но если запустить запрос через инструмент PhpStorm, все работает.
Метод:
/**
     * @Route("/rest_api/update", methods={"POST"})
     */
    public function restApiUpdate(Request $request)
    {
        $id = $request->request->get('id');
        $user = $request->request->get('user');
        $user = urldecode($user);
        $em = $this->getDoctrine()->getManager();
        $modelUser = $em->getRepository(Users::class)->find((int)$id);
        $modelUser->setName($user);
        $em->flush();

        return new JsonResponse($id);
    }

AngularJS:
$http({method: 'POST', url: 'http://public/rest_api/update', params: {'id': id, 'user': user}}).
                then(function success (response) {
                    $scope.response=response.data;
                    console.log(user);
                });

Сам запрос: public/rest_api/update?id=4&user=%D0%93%D1%83%D1%8...
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
@DronTat Автор вопроса
bears был прав, надо исправить запрос:
$http({method: "POST", url: "http://public/rest_api/update", headers: {'Content-Type': undefined}, data: {id: id, user: user}}).
                then(function success (response) {
                    $scope.response=response.data;
                    console.log(user);
                });

PHP:
$postdata = file_get_contents("php://input");
$data = json_decode($postdata);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@bears
 id передается через get параметр
public/rest_api/update?id=4&...

а в коде этот id получаете из массива $_POST
$id = $request->request->get('id');

а надо из $_GET
$id = $request->query->get('id');

UPD: с user-ом та же ситуация

UPD2: штормом видимо данные отправляете методом post, поэтому и работает
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы