Fügen Sie das Objekt in JSON -Datei hinzu, die nach Diensten Modul Drupal generieren
Frage
Ich brauche Hilfe bei diesem Problem. Ich muss Objekt hinzufügen, das den Hash meiner JSON -Datei umfasst.
Ich verwende Services -Modul in Drupal 6, um XML- und JSON -Datei aus meinen Knoten zu generieren. Wenn ich also meine Knoten in JSON sehe, habe ich Folgendes:
[
{
"nid": "7",
"vid": "7",
"type": "page",
"language": "",
"title": "Bievenido", ..... } ]
Aber ich brauche, dass diese JSON -Datei so aussieht:
[
{
"<whatever>": {
"nid": "7",
"vid": "7",
"type": "page",
"language": "",
"title": "Bievenido", ..... } ]
Wie ändere ich diese JSON -Datei, die vom Servicemodul generiert wird?
Lösung
Der JSON wird von der erzeugt RESTServerViewBuiltIn
Klasse in dem services/servers/rest_server/includes/rest_server.views.inc
Datei, speziell die render_json
Mitgliedsfunktion.
Services bieten eine Möglichkeit, dies zu überschreiben.
Erstens in einem benutzerdefinierten Modul -Implementierung hook_rest_server_response_formatters_alter
und ändern Sie die Ansichtsklasse, mit der die Ausgabe auf eine benutzerdefinierte Ausgabe gerendert wird:
function MYMODULE_rest_server_response_formatters_alter(&$formatters) {
$formatters['json']['view'] = 'RESTServerViewMYMODULE';
}
Fügen Sie dann Ihre benutzerdefinierte Ansichtsklasse hinzu (ich würde dies in der Moduldatei aufbewahren, um zu vermeiden, dass sie geladen werden müssen):
class RESTServerViewMYMODULE extends RESTServerView {
public function render() {
$new_data = new stdClass;
$new_data->some_key = $this->model;
$json = str_replace('\\/', '/', json_encode($new_data));
return $json;
}
}
Ich hoffe, das hilft