2015-07-27 16 views
5

Tôi mới làm quen với khung công tác Yii 2 và PHP. Khi tôi cố gắng lấy một dữ liệu mô hình từ máy chủ là Json, tôi nhận được dữ liệu rỗng. Nhưng khi tôi sử dụng var_dump, tôi nhận được kết quả. Mã tại bộ điều khiển được đưa ra dưới đây.Không thể lấy dữ liệu đối tượng Yii2 được trả lại dưới dạng Json

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

Mã lớp mô hình được đưa ra dưới đây

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', 
     ]; 
    } 
} 

Khi tôi sử dụng đường dẫn URL pathToServer/web/client, tôi nhận được kết quả lặp lại như {}. Tại sao nó như vậy. Tôi sử dụng MongoDB làm cơ sở dữ liệu.

+1

Hãy thử sử dụng một trở lại trong hành động điều khiển của bạn thay vào đó, đó là những gì Yii2 đối tượng đáp ứng kỳ vọng như một sự trở lại từ một hành động điều khiển – Sammaye

Trả lời

9

nhập lớp Response:

use yii\web\Response; 

Nói với Yii gì định dạng nào bạn muốn kết quả bằng cách thiết lập Yii::$app->response->format trước kết quả return

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

đáp ứng:

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

Bạn có thể đọc về định dạng phản hồi trong yii2-cookbook

2

Sử dụng có thể sử dụng trình trợ giúp JSON và trả lại thay vào đó.

Trước hết nhập khẩu Yii2 JSON helper

use yii\helpers\Json; 

Mã của bạn sẽ trông như thế này:

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

    $client->name = "ajith"; 

    return Json::encode($client); 
} 
Các vấn đề liên quan