2015-07-27 8 views
5

Jestem nowicjuszem dla frameworku Yii 2 i PHP. Kiedy próbuję pobrać dane modelu z serwera jako Json, otrzymuję puste dane. Ale kiedy używam var_dump, otrzymuję wynik. Kod na kontrolerze podano poniżej.Nie można uzyskać danych obiektu Yii2 zwróconych jako Json

// function inside class ClientController 
public function actionIndex() {   
    $client=new Client(); 
    $client->name="ajith"; 
    echo json_encode($client); 
} 

Model kod klasy podano poniżej

class Client extends \yii\mongodb\ActiveRecord { 
    public static function collectionName() { 
     return ['gym', 'client']; 
    } 

    public function attributes() 
    { 
     return [ 
      '_id', 'name', 'age', 'sex', 'phoneno', 'email', 'address', 'location' 
     ]; 
    } 

    public function rules() { 
     return [ 
      [['name', 'age', 'sex', 'phoneno', 'email', 'address', 'location'], 'safe'] 
     ]; 
    } 

    public function attributeLabels() { 
     return [ 
      '_id' => 'ID', 
      'name' => 'Name', 
      'age' => 'Age', 
      'sex' => 'Sex', 
      'phoneno' => 'Phoneno', 
      'email' => 'Email', 
      'address' => 'Address', 
      'location' => 'Location', 
     ]; 
    } 
} 

Kiedy użyć ścieżki URL pathToServer/web/client, otrzymuję wynik powtórzył jak {}. Dlaczego tak jest. Używam MongoDB jako bazy danych.

+1

Spróbuj użyć zwrotu w swojej akcji kontrolera zamiast, to co obiekt odpowiedzi Yii2 spodziewa się jako powrót z działania kontrolera – Sammaye

Odpowiedz

9

importu klasa reakcji:

use yii\web\Response; 

Powiedz Yii jakim formacie chcesz jako rezultat ustawiając Yii::$app->response->format przed wyniku return

public function actionIndex() {  
    Yii::$app->response->format = Response::FORMAT_JSON;   
    $data = ["success" => true, "message" => "Hello World"]; 
    return $data; 
} 

odpowiedzi:

{ 
    "success": true, 
    "message": "Hello World" 
} 

Można przeczytać o formaty odpowiedzi w yii2-cookbook

2

Użyj może użyć helper JSON i zwrócić go zamiast tego.

Przede wszystkim importu Yii2 JSON pomocnika

use yii\helpers\Json; 

Twój kod będzie wyglądać następująco:

public function actionIndex() 
{ 
    $client = new Client(); 

    $client->name = "ajith"; 

    return Json::encode($client); 
} 
Powiązane problemy