web-dev-qa-db-ja.com

エンティティを文字列でレンダリングするにはどうすればよいですか?

出来ますか?エンティティのviewBuilderを使用して完全なhtmlを生成し、その出力をブラウザに送信する代わりに文字列に保存するには、.

twigテンプレートを使用して電子メールメッセージをレンダリングする可能性が開かれます。

さまざまなサービスを試し、レンダラーサービスを使用して、ページ固有の出力をHTMLとしてレンダリングできますが、完全なHTMLコードを文字列に変換する方法が見つかりません。

マット。

1
DragonEye

あなたの質問は、「a drupal 8エンティティを文字列にレンダリングする」です。これは、これを行う方法の例です。エンティティを取得します。エンティティノードのビュービルダーを取得し、それを使用して、表示モードが「フル」の配列をレンダリングします。これをrenderRootで文字列$ htmlにレンダリングします。

$node = \Drupal::entityManager()->getStorage('node')->load($nodeid);
$view_builder = \Drupal::entityManager()->getViewBuilder('node');
$renderarray = $view_builder->view($node, 'full');
$html = \Drupal::service('renderer')->renderPlain($renderarray);

これは、任意のエンティティに対して実行できます。デフォルトでは、テーマで設定されているnode.html.twigを使用します。ただし、レンダリングする前にレンダー配列を変更できます。

編集:メールの場合は renderPlain() を使用します。

7
4k4