2017-02-27 6 views
1

Wie kann ich manipulieren/die Rückkehr json von ändern:TYPO3 Extbase - Manipulieren/Wechsel Rückkehr 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 
}] 

zum Beispiel:

{ 
"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" 
} 

Ich habe versucht, dies in meinem Controller, aber es ist nicht einmal Filterung für Name & Besitzer:

/** 
* @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());      
} 

ich alle Felder noch in der Standard-json bekommen.

, dass die Funktion aus dem Repository ist:

public function jsonRequest() { 

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

} 
+0

Können Sie den Code von '$ this-> leiRepository-> jsonRequest()'? –

+0

Die Funktion aus dem Repository für jsonRequest()? Ich stellte oben ... –

+0

Und wie bekommen Sie JSON? Es wird kein 'json_encode()' oder ähnliches angezeigt. –

Antwort

0

Die JsonView Konfiguration ist nur in der Lage Filterung/Daten zu reduzieren - das ist nicht verwendet werden kann, zusätzliche berechnete Eigenschaften wie wie in der ursprünglichen Frage angefordert hinzuzufügen. Außerdem lautet das Schlüsselwort _only anstelle von only.

Sie müssen json_encode() nicht verwenden und können weiterhin JsonView verwenden. Die Datennutzlast muss jedoch in Ihrem Controller einzeln berechnet werden - also z. recordsTotal und DT_RowId Eigenschaften.

Verwandte Themen