Php 显示IP地址的Drupal 8自定义块模块上的缓存问题
我创建了一个简单的自定义块模块,用于显示访问网站的用户的IP地址。当站点获得访问者时,该访问者会在块中看到自己的IP地址。我不需要存储此信息或将其用于任何其他目的,这只是出于美观目的,因此只需要块插件。该模块工作正常并显示IP,但是,它是缓存的,并且IP不会更新,除非我手动访问性能页面并清除站点缓存。我如何覆盖它,以便访问者看到他们当前的IP地址 这是我的自定义块模块文件:Php 显示IP地址的Drupal 8自定义块模块上的缓存问题,php,caching,drupal,drupal-modules,drupal-8,Php,Caching,Drupal,Drupal Modules,Drupal 8,我创建了一个简单的自定义块模块,用于显示访问网站的用户的IP地址。当站点获得访问者时,该访问者会在块中看到自己的IP地址。我不需要存储此信息或将其用于任何其他目的,这只是出于美观目的,因此只需要块插件。该模块工作正常并显示IP,但是,它是缓存的,并且IP不会更新,除非我手动访问性能页面并清除站点缓存。我如何覆盖它,以便访问者看到他们当前的IP地址 这是我的自定义块模块文件: <?php namespace Drupal\tester\Plugin\Block; use Drupal\Co
<?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);
}
}
可以将缓存上下文添加到渲染数组中。有一个问题。要使用的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',
],
],
];
}
}