Fügen Sie das Objekt in JSON -Datei hinzu, die nach Diensten Modul Drupal generieren

drupal.stackexchange https://drupal.stackexchange.com/questions/20675

  •  22-10-2019
  •  | 
  •  

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?

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit drupal.stackexchange
scroll top