2017-02-27 77 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。但是,數據有效載荷必須在您的控制器中單獨計算 - 因此,要包含例如recordsTotalDT_RowId屬性。