Ich bin ganz neu in Yü 2, aber hier geht zu akzeptieren:Yü 2 einrichten Controller json fordert
Was ich versuche zu erreichen einzurichten einen Controller, der liest einfach in irgendwelchen json Daten gebucht es.
Ich bin etwas verwirrt, wie das in Yii funktioniert.
Was ich bisher versucht wird ftest einen Controller namens einrichten, um zu sehen, ob ich es bekommen könnte etwas json Rückkehr, die zu funktionieren scheint:
public function actionFTest(){
$request = Yii::$app->request;
Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
$headers = Yii::$app->response->headers;
$headers->add('Content-Type', 'text/json');
$response = Yii::$app->response;
$response->format = \yii\web\Response::FORMAT_JSON;
$response->data = ['message' => 'Evan .. WHERE ARE YOU?'];
//$notificationData = json_decode(file_get_contents("php://input"), true);
//echo var_dump($notificationData);
}
Es ist ein bisschen chaotisch, seit ich werfen worden im Code hin und her. Ich weiß, dass ich normalerweise etwas wie $ this-> render (usw.) zurückgeben sollte, aber ich bin mir nicht sicher, was ich als Sicht zurückkehren muss.
Vielen Dank für jede Hilfe, die Sie anbieten können
Menge Dinge sind nicht klar aus Ihrem Post hilfreich sein, wie, 1) Woher kommen die json-Daten? 2) Was beabsichtigen Sie damit? 3) Was passiert, nachdem Sie die Daten verarbeitet haben? ?? –
Werfen Sie einen Blick auf den Abschnitt "enabling-json-input" hier: http://www.yiiframework.com/doc-2.0/guide-rest-quick-start.html#enabling-json-input - auch wenn Sie Wenn Sie keine API selbst erstellen, sollten Sie in der Lage sein, die Beispiele zu verwenden, um das zu tun, was Sie beschreiben. – ldg
Entschuldigung, nur zu erwähnen: Die Daten würden von einem anderen Skript auf einem anderen Server (eine Whitelist IP) auf diese Seite/URL veröffentlicht werden. Die zugrunde liegenden Probleme dahinter waren, dass Daten nicht an diese Aktion gesendet werden konnten, die ich durch die aktivierte CSRF-Validierung behoben habe: $ this-> enableCsrfValidation = false; – user3798442