ビューで使用されるajaxは前処理フックを呼び出しますか?


6

たくさんのフィールドがあるビューがあり、それらのフィールドを次のようにスタイリングしています:

views-view-fields.html.twig

私の.themeファイルでは、前処理関数を使用して上記のテンプレートに追加の変数を渡しています。

function theme_preprocess_views_view_fields(&$vars) {
  $vars['my_var'] = 'hello';
}

したがって、twigテンプレートでは、次のようなことができます。

{% for field in fields -%}
  {{my_var}}
{%- endfor %}

これは、最初にロードされたフィールドのチャームのように機能しますが、[さらに読み込む]をクリックするか、公開されたフィルターを使用してビューをフィルタリングすると、ロードされた他の要素にはmy_varがなくなります。

ここで、my_varをテンプレートファイルに直接「キンティング」します。Ajaxで読み込まれた他のすべての要素ではmy_varがNULLであることを確認しました。これにより、問題は、theme_preprocess_views_view_fieldsが1回呼び出され、ページが初めて読み込まれ、Ajax呼び出しから完全に無視されることにあると思いました 。

この前処理は、Drupalがビュー自体で実行しているAjax呼び出しによって呼び出されて処理されるべきではありませんか?

そうでない場合、他の要素がロードされたときにDrupalにクエリを実行してこのフックを再実行する方法はありますか?

ありがとう!


1
私の日を作った「キント」ハハ。
Sssweatなし16

:)それがうれしかった!他に何か提案はありますか?
Drupalotto 2016

@Drupalottoビューのキャッシュをオフにしようとしましたか?理由を確認してください。
ジョン

@neetu morwani ..
Jonh

ビューのキャッシュはオフです。キャッシュの問題のようには見えません。Ajaxページャーを介して次の行セットが呼び出されているときにHook_preprocess_views_viewが呼び出されませんか?AJAXからの変数配列行を前処理する方法はありますか?
neetu morwani

回答:


2

テンプレート「views-view-fields.html.twig」には、「view」、「fields」、「row」の3つの変数が返されますここで確認できます

カスタム変数を追加するには、以下のように、これらを3つの変数に入れる必要があります。

 function dt8_preprocess_views_view_field(&$vars)
  {
    $vars['row']->my_var = 'Hey';
  }

テンプレート「views-view-fields.html.twig」では、次のようにintを出力します

{{ row.my_var }}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.