[Drupal]フィールドフォーマッターとは
フィールドフォーマッターとは
フィールドの値を表示するときに、どのように表示するかを決めるもの
Drupalの場合、エンティティのフィールドを作成するとフィールドタイプに応じていくつかのフィールドフォーマッター(以下フォーマッター)が使えるようになっている
設定方法
サイト構築 > コンテンツタイプ > [任意のコンテンツタイプ] > 表示設定から行う
フォーマッターによる見え方の違い
例えばフィールドタイプが「画像」の場合、「画像」、「画像のURL」というフォーマッターが最初からインストールされており、それぞれ以下のように表示のされ方が違う。
フォーマットされていない状態(編集画面)
画像
画像のURL
まとめ(イメージ)
フォーマッターが便利な訳
管理画面で確認できる
さきほど書いたように、「表示設定」からどのフォーマッターを使っているのか一目瞭然なので、表示時にどんな処理がされているか把握しやすい。フィールドタイプごとにデフォルトでインストールされるフォーマッターがいくつかあるのでフィールドの表示はサイトビルディングで完結できる場合も多い
エンティティのディスプレイモードに紐付けられている
「このディスプレイモードのときは、このフィールドはこの方法で表示する」というように紐付けて管理できるので、あらかじめディスプレイモードごとのフィールドフォーマットの設定をドーンと作っておけばhook_preprocessやTwigでちまちまフィールド値を加工する必要がなくなる
- Twigでフォーマットした値を表示する場合
<!--あらかじめコンテンツタイプの表示設定からフォーマッターを指定しておく-->
<!--contentにノードエンティティが入っている場合-->
{{ content.field_name|view }}
- フィールド単体のレンダリング配列を取得する場合
// my_image_formatterでフォーマットした画像フィールドのレンダリング配列を取得する.
$node->get('field_image')->view('my_image_formatter');
- ノード全体のレンダリング配列を取得する場合
// 特定のノードを特定のディスプレイモードのレンダリング配列を取得する.
// 各フィールドの値はフォーマッターでフォーマットされた値が表示される
$view_builder = \Drupal::entityTypeManager()->getViewBuilder('node');
$view = $view_builder->view($node, 'my_display_mode')
Viewsで使える
「表示設定」で使えるフォーマッターはViewsのフィールドの設定でも選択できる。
簡単にカスタムフォーマッターを作ることができる
プラグインを作成することで、比較的簡単にカスタムフォーマッターを作成できる。デフォルトでインストールされているフォーマッターに要件に見合うものが無ければ自分で追加すればOK
Author And Source
この問題について([Drupal]フィールドフォーマッターとは), 我々は、より多くの情報をここで見つけました https://qiita.com/863/items/9b9c8dbbd5b72ce5cee8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .