首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在通过导数生成动态本地操作时不设置缓存

在通过导数生成动态本地操作时不设置缓存
EN

Drupal用户
提问于 2022-05-30 09:27:50
回答 2查看 157关注 0票数 1

我试图通过一个导数生成一个动态的局部动作。派生程序工作并返回动态生成的链接,但是缓存似乎保持了它的值。

根据这个Drupal岩心变化日志,我知道我可以在派生函数上设置缓存参数,但到目前为止,我尝试了这些参数,但都是徒劳的--我不太熟悉这些概念,但非常感谢关于如何防止$gid被缓存的任何指导。

这里是我的本地动作leads.links.action.yml

代码语言:javascript
复制
leads.new_deal:
  deriver: 'Drupal\leads\Plugin\Derivative\DynamicLocalTasks'

这是我的导数:

代码语言:javascript
复制
derivatives['leads.new_deal'] = $base_plugin_definition;
    $this->derivatives['leads.new_deal']['title'] = "New Deal";
    $this->derivatives['leads.new_deal']['route_name'] = 'entity.group_content.create_form';
    $this->derivatives['leads.new_deal']['appears_on'] = ['leads.deals'];
    $this->derivatives['leads.new_deal']['route_parameters'] = ['plugin_id' => 'group_node:deals','group' => $gid];
    $this->cacheMaxAge = 0;
    $this->getCacheMaxAge();
    
    return parent::getDerivativeDefinitions($base_plugin_definition);
  }

  public function getCacheMaxAge() {
    return 0;
  }

}
EN

回答 2

Drupal用户

回答已采纳

发布于 2022-05-30 11:23:11

将CacheableDependencyTrait添加到派生程序并不能使其完全缓存。Drupal中没有检查普通请求中的派生程序的可缓存依赖项的代码。您必须从本地任务插件返回标题、路由名称等,其中还可以使用getCache*()方法。请参阅https://drupal.stackexchange.com/a/273293/47547

票数 2
EN

Drupal用户

发布于 2022-05-30 11:32:45

正如@4uk4所建议的,下面是我最后所做的事情:

代码语言:javascript
复制
leads.new_deal:
  route_name: entity.group_content.create_form
  title: 'New Deal'
  route_parameters:
    plugin_id: group_node:deals
    group: 0
  class: 'Drupal\leads\Plugin\Menu\DynamicLocalTasks'
  appears_on:
    - 'leads.deals'
代码语言:javascript
复制
 'group_node:deals',
      'group' => $gid,
    ]; 
  }
}
票数 1
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/311382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档