Мне потребовалось время, чтобы понять это, поскольку это было немного очевидно. Я отвечу сам, чтобы другие могли извлечь пользу из ответа и, конечно же, посмотреть, есть ли лучший способ сделать это. Проблема была основана на Axios / Yii2, но я предполагаю, что это будет в равной степени применяться к другим интерфейсным библиотекам / фреймворкам, отправляющим данные в Yii2.
Мне нужно было отправить данные из небольшой формы, созданной на Vuejs, отправив запрос Axios в Action / Controller на Yii2, поэтому данные отправляются по простому запросу POST, и сообщение попадает на контроллер, но я не смог получить данные по акции, $ _POST | $ post прибывает пустым (проверено с помощью xdebug).
Насколько я помню, это было связано с безопасностью. Но я уже пытался отключить общедоступный $ enableCsrfValidation, так что проблема не в этом.
public $enableCsrfValidation = false;
Но несмотря ни на что, данные не добавлялись к данным запроса / публикации внутри Yii2.
Следующее изображение объясняет проблему, которую вы там найдете:

Ответ, как я сказал, «отчасти очевиден», но я не мог этого видеть, и я уверен, что некоторые другие разработчики, вероятно, упадут на это.
После сумасшедшего поиска и опроса всех, я попытался отправить запрос с помощью приложения Postman, да, это лучшее, что я знаю для тестирования API.
Не забудьте добавить файл cookie xdebug, чтобы иметь возможность отлаживать конечную точку PHP.
Там я нашел первую подсказку «очевидная часть», я не отправлял данные как данные формы, Axios и другие библиотеки, отправлял данные как необработанную (application / json) полезную нагрузку.
Это означает, что Yii2 не сможет найти данные внутри почтового запроса, да, это там, но магия Yii2 не будет работать, вы также не найдете эти данные внутри $ GLOBALS или в $ _POST.
Итак, читая документацию Yii2, я обнаружил, что внутри запроса я могу использовать функцию, которая поможет мне восстановить необработанные данные, поэтому для этого используйте следующую строку:
$raw_data = Yii::$app->request->getRawBody();
Теперь эти данные поступают к вам в виде простой необработанной строки json, поэтому используйте возможности PHP, чтобы преобразовать ее в объект.
$object= json_decode($raw_data );
И, наконец, используйте данные внутри, вызвав свойства, которые вы ищете, отправленные в полезной нагрузке:
Полезная нагрузка Json:
{
"msg":"This is my payload",
"id":"11"
}
Чтобы использовать это:
echo $object->{'msg'}; // prints: This is my payload
Так что это способ справиться с этим, теперь я хотел бы увидеть некоторые другие точки зрения, чтобы увидеть, есть ли способ лучше или более чистый способ сделать это. Надеюсь, поможет.
вы также можете использовать традиционный
json_decode(file_get_contents('php://input'), true);