我试图通过一个导数生成一个动态的局部动作。派生程序工作并返回动态生成的链接,但是缓存似乎保持了它的值。
根据这个Drupal岩心变化日志,我知道我可以在派生函数上设置缓存参数,但到目前为止,我尝试了这些参数,但都是徒劳的--我不太熟悉这些概念,但非常感谢关于如何防止$gid被缓存的任何指导。
这里是我的本地动作leads.links.action.yml:
leads.new_deal:
deriver: 'Drupal\leads\Plugin\Derivative\DynamicLocalTasks'这是我的导数:
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;
}
}发布于 2022-05-30 11:23:11
将CacheableDependencyTrait添加到派生程序并不能使其完全缓存。Drupal中没有检查普通请求中的派生程序的可缓存依赖项的代码。您必须从本地任务插件返回标题、路由名称等,其中还可以使用getCache*()方法。请参阅https://drupal.stackexchange.com/a/273293/47547
发布于 2022-05-30 11:32:45
正如@4uk4所建议的,下面是我最后所做的事情:
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' 'group_node:deals',
'group' => $gid,
];
}
}https://drupal.stackexchange.com/questions/311382
复制相似问题