gpt4 book ai didi

php - 显示 IP 地址的 Drupal 8 自定义 block 模块的缓存问题

转载 作者:行者123 更新时间:2023-12-05 07:45:27 25 4
gpt4 key购买 nike

我创建了一个简单的自定义 block 模块,用于显示访问网站的用户的 IP 地址。当站点有访问者时,该访问者会在 block 中看到他们自己的 IP 地址。我不需要存储此信息或将其用于任何其他目的,这仅用于美观目的,因此只需要 block 插件。该模块工作正常并显示 IP,但是,它被缓存并且 IP 不会更新,除非我手动访问性能页面并清除站点缓存。我如何覆盖它以便访问者看到他们当前的 IP 地址?

这是我的自定义 block 模块文件:

<?php

namespace Drupal\tester\Plugin\Block;
use Drupal\Core\Block\BlockBase;
use Symfony\Component\HttpFoundation\Request;

class newid extends BlockBase {

/**
* {@inheritdoc}
*/
public function build() {
$request = \Drupal::request()->getClientIp();
return array('#markup' => $request);
}
}

最佳答案

您可以将缓存上下文添加到渲染数组。有一个 IP Cache Context .要使用的 ID 只是 ip

试试这个:

<?php

namespace Drupal\tester\Plugin\Block;
use Drupal\Core\Block\BlockBase;
use Symfony\Component\HttpFoundation\Request;

class newid extends BlockBase {

/**
* {@inheritdoc}
*/
public function build() {
$request = \Drupal::request()->getClientIp();
return [
'#markup' => $request,
'#cache' => [
'contexts' => [
'ip',
],
],
];
}

}

关于php - 显示 IP 地址的 Drupal 8 自定义 block 模块的缓存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41623654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com