web-dev-qa-db-ja.com

$ variablesを理解するpreprocess_views_view_field()

この説明hook_preprocess_views_view_field()によれば、_$variables_には、特に_$variables['field']_が含まれます。

ただし、オブジェクトを検査するためだけにprint_r($variables['field'])を実行すると、(ユーザー名とパスワードを含めるために)オブジェクト全体が出力され、ブラウザがクラッシュします。

私はフィールド名を確認する方法を理解しようとしていますが、奇妙に単純ではないことが証明されています。

_$variables_を適切にインデックス化するにはどうすればよいですか?

2
Brian Huether

ほとんどのビューオブジェクトには循環参照があり、出力が膨大になる可能性があるため、ブラウザがクラッシュする可能性があります。

_$variables['field']_は、レンダリングされるフィールドのフィールドハンドラオブジェクトです。私はこれらすべてが \Drupal\views\Plugin\views\field\FieldPluginBase() から派生していることを97%確信しています(3%の不確実性は1日の終わりであり、私は本当に疲れています)。

最善の策は、debug(get_class($variables['field']))を実行して完全修飾クラス名を取得し、前処理でヒントを入力することです。例:

_function MYMODULE_preprocess_views_view_field(&$variables) {
  /** @var \Drupal\views\Plugin\views\field\Boolean $field */
  $field = $variables['field'];
}
_

次に、IDE=を使用して、必要な操作をナビゲートします。

_$variables_の内容を確認するには、

_debug(array_keys($variables));
_

タイプを取得するために同様の演習を行います。これは、キーがすべて文字列である、単なる退屈な連想配列です。

3
mpdonadio

このコードを使用すると、フィールド名を取得できます。

$variables['field']->field

またはあなたもしたいかもしれません

$variables['field']->realField
1
Guillaume Bois