Tôi đang cố gắng tạo một hành động cục bộ động thông qua một công cụ phái sinh. Công cụ phái sinh hoạt động và trả về một liên kết được tạo động nhưng bộ đệm dường như vẫn duy trì giá trị của nó.
Theo điều này Nhật ký thay đổi lõi Drupal, tôi hiểu rằng tôi có thể thiết lập các tham số bộ đệm trên công cụ phái sinh mà tôi đã thử nhưng vô ích cho đến nay - tôi chưa quen lắm với các khái niệm này nên đánh giá cao bất kỳ hướng dẫn nào về cách ngăn chặn $gid
khỏi bị lưu trữ.
Đây là hành động địa phương của tôi dẫn.links.action.yml
:
khách hàng tiềm năng.new_deal:
công cụ dẫn xuất: 'Drupal\leads\Plugin\Derivative\DynamicLocalTasks'
Đây là dẫn xuất của tôi:
<?php
không gian tên Drupal\leads\Plugin\Derivative;
sử dụng Drupal\Thành phần\Plugin\Derivative\DeriverBase;
sử dụng Drupal\Core\Cache\CacheableDependencyInterface;
sử dụng Drupal\Core\Cache\CacheableDependencyTrait;
/**
* Xác định các tác vụ cục bộ động.
*/
lớp DynamicLocalT task mở rộng DeriverBase {
sử dụng CacheableDependencyTrait;
/**
* {@inheritdoc}
*/
hàm công khai getDerivativeDefinitions($base_plugin_definition) {
$groupLead = getGroupsUserIsLead();
nếu (isset($groupLead[0])){
$gid = $groupLead[0];
}
khác{
trả về \Drupal\Core\Access\AccessResult::forbidden();
}
// Triển khai logic động để cung cấp giá trị cho các khóa giống như trong ví dụ.links.task.yml.
$this->derivatives['leads.new_deal'] = $base_plugin_definition;
$this->derivatives['leads.new_deal']['title'] = "Giao dịch mới";
$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();
trả về cha mẹ::getDerivativeDefinitions($base_plugin_definition);
}
hàm công khai getCacheMaxAge() {
trả về 0;
}
}