web-dev-qa-db-ja.com

Drupal JSONへの8ノードのシリアル化

\ Drupal\node\Entity\Node :: load($ nid)を使用してノードオブジェクトを変数に格納し、その変数をdrupal 8のシリアライゼーションコンポーネントまたはシンフォニーのシリアライゼーションにさえも渡します。メソッドすべての努力の結果、ノードの最初のプロパティである{"in_preview":null}のみをエンコードするJSONオブジェクトが生成されました。

たとえば、次のコールバックは{"in_preview":null}を返します

public function page(){

  $nrm = new \Drupal\Component\Serialization\Json;
  $node = Node::load(2);
  $json = $nrm -> encode($node, 'json');

  return $json;

}

上記のコードで$ nodeのシリアル化を実現するクラス/メソッドは何ですか?

6
Emanegux

Drupalデータ型( Typed Data API ))をシリアル化して正規化を適切に実行する場合は、serializerサービスを使用する必要があります。これには、 serializerサービスを定義するAlari Truutsが指摘したシリアル化モジュールを有効にします。

Serializeメソッドは、$contextパラメータは意味します。 Drupal Typed Dataの場合、データタイプのプラグインIDが必要です(この場合、 EntityAdapter )。

$serializer = \Drupal::service('serializer');
$node = Node::load(2);
$data = $serializer->serialize($node, 'json', ['plugin_id' => 'entity']);
15
mradcliffe