2015-03-08 18 views
11

tworzę restful apis i miałem funkcję wysyłania danych odpowiedzi w yii1 jak tenJak przekonwertować tablicy do JSON w yii2

public function sendResponse($data) 
{ 
    header('Content-Type: application/json; charset=utf-8'); 
    echo CJSON::encode($data); 
    exit; 
} 

CJSON nie jest dostępny w Yii2 więc jak mogę to zrobić w Yii2

Odpowiedz

24

Nie trzeba ręcznie ustawiać nagłówka w ten sposób.

W konkretnym działania/metody można ustawić go tak:

use Yii; 
use yii\web\Response; 

... 

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

Następnie po tym po prostu wrócić prostą tablicę tak:

return ['param' => $value]; 

Można znaleźć hotel w oficjalnych docs here.

Dla ponad jednej działaniem przy użyciu specjalnego ContentNegotiator filtr jest bardziej elastyczne podejście:

/** 
* @inheritdoc 
*/ 
public function behaviors() 
{ 
    return [ 
     [ 
      'class' => ContentNegotiator::className(), 
      'only' => ['index', 'view'] 
      'formats' => [ 
       'application/json' => Response::FORMAT_JSON, 
      ], 
     ], 
    ]; 
} 

Istnieje więcej ustawień, można to sprawdzić w official docs.

Co do reszty, baza yii\rest\Controller ma już ona ustawiona na json i xml:

'contentNegotiator' => [ 
    'class' => ContentNegotiator::className(), 
    'formats' => [ 
     'application/json' => Response::FORMAT_JSON, 
     'application/xml' => Response::FORMAT_XML, 
    ], 
], 
+3

Dzięki arogachev za doskonałą informację. chociaż moje pytanie dotyczyło właśnie kodowania json w Yii2, dodano świetną informację o nagłówkach ustawień Bardzo dziękuję –

0

:: find() -> asArray() -> wszystko(); życzę pomocy.

1

Można użyć klasy JSON w yii2 z

yii\helpers\Json; 

zawierać To metody, takie jak:

Json::encode(); 
Json::decode(); 

Te metody bezpośrednio przekształca yii2 obiektów ActiveRecord do tablicy JSON.

+0

Json :: decode(); nie dekodowane obiekty json – Developer

Powiązane problemy