Как получить значения записей из formData в Controller (Symfony) - PullRequest
0 голосов
/ 14 января 2019

Я создал REST Api. С фронта я отправляю значения постов с помощью axios. (я использую ReactJS). В Back with Symfony, в моем контроллере я хочу получить значения поста. Как я могу сделать ? Я сделал это:

спереди:

const data = new FormData();

       let postData = {
            source: 'lcl',
            userLastname: lastname,
            userFirstname: firstname,
            text: message,
        }

data.append('data', postData);

Axios.post('http://127.0.0.1:8000/send', data)
        .then(function (response) {
            console.log(response);
        })
        .catch(function (error) {
            console.log(error)
        });

И со своей спины в контроллере я пробую это:

$data = $request->request->get('data');

возвращаемое значение [объект Object] ... Как я могу получить значение (источник, имя пользователя и т. Д.).

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 15 января 2019
[object Object]

Это происходит, если JS преобразует объект в строку, ваша полезная нагрузка никогда не достигает вашего бэкэнда. Вызов $ request-> request-> get ('source') и т. Д. Будет работать.

Это происходит потому, что вы добавляете его к объекту formdata, который будет неявно преобразован в строку, попробуйте передать postData вместо ваших данных. И у тебя все получится.

Так же, как

Axios.post('http://127.0.0.1:8000/send', postData)

Edit: Извините, преобразование запроса может быть необязательным. Пойдите для слушателя Param от fosrestbundle или используйте https://github.com/symfony-bundles/json-request-bundle

0 голосов
/ 14 января 2019

Вы должны декодировать свои данные:

$data = $request->request->get('data');

if (!empty($data)) {
    $array = json_decode($data, true); // 2nd param to get ass array
    $userLastname =  $array['userLastname']; // etc...
}

Теперь $array будет массивом, полным ваших данных JSON. Удалите истинное значение параметра в вызове json_decode (), чтобы получить объект stdClass.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...