2017-02-27 20 views
1

どのように私はから戻るJSONを変更する/操作することができ返す/変更を操作:例えばにTYPO3 Extbase - JSON

[{ 
    "name": "Audi", 
    "owner": "Peter", 
    "price": 0, 
    "color": "Blue", 
    "pid": 0, 
    "uid": 1 
}, { 
    "name": "BMW", 
    "owner": "Wolfgang", 
    "price": 0, 
    "color": "Black", 
    "pid": 0, 
    "uid": 2 
}] 

を:

{ 
"data": [{ 
     "DT_RowId": "row_1", 
     "name": "Audi", 
     "owner": "Peter" 
    }, { 
     "DT_RowId": "row_2", 
     "name": "BMW", 
     "owner": "Wolfgang" 
    }], 
    "options": [], 
    "files": [], 
    "draw": 1, 
    "recordsTotal": "2", 
    "recordsFiltered": "16" 
} 

私は私のコントローラでこれを試してみましたが、それもありません名前&所有者のためのフィルタリング:

/** 
* @var string 
*/ 
protected $defaultViewObjectName = 'TYPO3\CMS\Extbase\Mvc\View\JsonView'; 

public function jsonRequestAction() {   
    $this->view->setVariablesToRender(array('records'));       
    $this->view->setConfiguration(array(
      'records' => array(
       'only' => array('name', 'owner') 
      ) 
     ) 
    );  
    $this->view->assign('records', $this->leiRepository->jsonRequest());      
} 

は、私はまだ標準JSON内のすべてのフィールドを取得します。

リポジトリからの機能です:

public function jsonRequest() { 

    $query = $this->createQuery(); 
    $result = $query->setLimit(1000)->execute(); 
    //$result = $query->execute(); 
    return $result; 

} 
+0

'$ this-> leiRepository-> jsonRequest()'のコードを投稿できますか? –

+0

jsonRequest()のリポジトリからの関数ですか?私は上記の... –

+0

JSONはどうやって取得できますか? 'json_encode()'などは表示されません。 –

答えて

0

JsonView設定はデータを縮小/フィルタリングすることができるだけである - これは最初の質問で要求されたように計算されたような追加のプロパティを追加するために使用することはできません。それ以外に、キーワードはonlyの代わりに_onlyです。

json_encode()を使用する必要はなく、JsonViewを使用することもできます。しかし、データペイロードはコントローラ内で個別に計算する必要があります。 recordsTotalおよびDT_RowIdの特性を有する。

関連する問題