2016-07-15 58 views
1

我是很新的Yii 2,但這裏有雲:的Yii 2設置控制器接受JSON請求

我試圖做到的是建立一個控制器,只需在發佈到任何JSON數據讀取它。

我對Yii的工作方式略有困惑。

我到目前爲止已經設置了一個名爲FTEST控制器,看看我是否能得到它返回一些JSON這似乎工作的嘗試:

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); 

} 

它有點亂,因爲我已經扔在代碼中來回。我知道我通常應該返回像$ this-> render(etc)這樣的東西,但我不確定我需要返回的視圖。

感謝您的幫助,您可以提供

+0

地塊不能從您的文章清楚一樣,1 )json數據來自哪裏2)您打算如何處理它3)處理數據後會發生什麼? ?? –

+0

看看這裏的「enable-json-input」部分:http://www.yiiframework.com/doc-2.0/guide-rest-quick-start.html#enabling-json-input - 即使你沒有建立一個API本身,你應該能夠使用那裏的例子去做你所描述的。 – ldg

+0

道歉,只需提及: 數據將從另一臺服務器(白名單IP)上的另一個腳本發佈到此頁面/ URL。我發現後面的潛在問題是數據無法發佈到此操作,我通過啓用CSRF驗證來修復: $ this-> enableCsrfValidation = false; – user3798442

回答

2

這可能是有益的

use Yii; 
    use yii\web\Response; 



    public function actionFTest() 
    { 
      Yii::$app->response->format = Response::FORMAT_JSON; 
    } 

Then after that just return a simple array like that: 

    return ['param' => $value]; 

閱讀本 http://www.yiiframework.com/doc-2.0/yii-web-response.html# $格式細節的東西

+0

工作一個款待,感謝一百萬。 – user3798442

+0

很高興收到你的消息,它的作品..享受:) @ user3798442 –