Saya belum bisa menambahkan konteks cache untuk bekerja untuk entitas di drupal 8. Secara khusus saya akan mencari header: User-Agent. Saya mencoba banyak variasi pada modul berikut.
use Drupal\node\NodeInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
function hook_entity_view_alter(&$build, EntityInterface $entity, EntityViewDisplayInterface $display){
if($entity->getType() == 'relevant_type'){
$build['#cache']['contexts'][] = 'headers:User-Agent';
}
}
Saya mencoba untuk mendapatkan akses node untuk diperiksa ketika konteks itu berubah. Saya juga sudah mencobanya di hook_entity_build_defaults_alter()
fungsi.
Jawaban:
Anda memang harus menggunakannya
hook_entity_build_defaults_alter()
. Dokumentasinya bahkan secara eksplisit menyatakan ini:Ini mungkin tidak bekerja untuk Anda karena Anda lupa untuk menghapus cache render setelah menerapkan hook itu.
Pengait itu dipanggil di https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21EntityViewBuilder.php/class/EntityViewBuilder/8
Juga lihat https://www.drupal.org/developing/api/8/cache/contexts untuk ikhtisar konteks cache (apa itu, bagaimana menggunakannya, yang mana inti dikirim bersama).
sumber