Используя redux-api-middleware
, который работает аналогично axios
и jquery.ajax
, я передал formData, который представляет собой смесь изображения и других значений формы, как вы можете видеть на этом изображении: ![enter image description here](https://i.stack.imgur.com/strOT.png)
Проблема, с которой я столкнулся, заключается в том, что после успешного вызова API с помощью запроса POST объект PHP $_POST
становится пустым, хотя фактический запрос POST происходит. Это мой фрагмент кода:
import { CALL_API } from "redux-api-middleware";
export function createTestAnnouncement(data) {
return (dispatch, getState) => {
const { auth: { oauthToken, oauthTokenSecret } } = getState();
const formData = new FormData();
Object.entries(data).forEach(([key, value]) => {
if (key === 'image') {
formData.append(key, value);
} else {
formData.set(key, value);
}
});
return dispatch({
[CALL_API]: {
endpoint: "/api/test-announcements",
method: "POST",
headers: {
'xoauthtoken': oauthToken,
'xoauthtokensecret': oauthTokenSecret,
},
body: formData,
types: [CREATE_TEST_ANNOUNCEMENTS, CREATE_TEST_ANNOUNCEMENTS_SUCCESS, CREATE_TEST_ANNOUNCEMENTS_FAILURE]
}
})
}
}
Как можно получить значения из объекта $_POST
? Правильно ли я использовал FormData
объект?
РЕДАКТИРОВАТЬ: Мой контроллер просто так, PS: я уверен, что это работает, потому что это работает на простой application/json
запрос
use api\controllers\BaseController;
use model\Operations\TestAnnouncements\TestAnnouncementOperation;
use model\DB\TestAnnouncement;
class IndexController extends BaseController
public function actionCreate()
{
var_dump($_POST);
// Commented this out because the payload is not JSON
// $request = \Yii::app()->request;
// $op = new TestAnnouncementOperation();
// $op->topic = $request->getJSON('topic');
...
}
...
Я всегда получаю NULL на моем var_dump. При использовании почтальона и передаче данных формы по телу у меня получается значение $ _POST.