Încerc să generez o acțiune locală dinamică printr-un derivat. Derivatul funcționează și returnează un link generat dinamic, dar memoria cache pare să își mențină valoarea.
În conformitate cu aceasta Jurnalul modificărilor de bază Drupal, am înțeles că aș putea seta parametrii de cache pe derivat, pe care l-am încercat, dar în zadar până acum - nu sunt încă foarte familiarizat cu aceste concepte, așa că apreciez orice îndrumare cu privire la modul de prevenire $gid
din cache.
Iată acțiunea mea locală leads.links.action.yml
:
leads.new_deal:
derivat: „Drupal\leads\Plugin\Derivative\DynamicLocalTasks”
Iată derivata mea:
<?php
spațiu de nume Drupal\leads\Plugin\Derivative;
utilizați Drupal\Component\Plugin\Derivative\DeriverBase;
utilizați Drupal\Core\Cache\CacheableDependencyInterface;
utilizați Drupal\Core\Cache\CacheableDependencyTrait;
/**
* Definește sarcini locale dinamice.
*/
clasa DynamicLocalTasks extinde DeriverBase {
utilizați CacheableDependencyTrait;
/**
* {@inheritdoc}
*/
funcția publică getDerivativeDefinitions($base_plugin_definition) {
$groupLead = getGroupsUserIsLead();
dacă (isset($groupLead[0])){
$gid = $groupLead[0];
}
altfel{
returnează \Drupal\Core\Access\AccessResult::interzis();
}
// Implementați logica dinamică pentru a furniza valori pentru aceleași chei ca în example.links.task.yml.
$this->derivatives['leads.new_deal'] = $base_plugin_definition;
$this->derivatives['leads.new_deal']['title'] = „Ofertă nouă”;
$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);
}
funcția publică getCacheMaxAge() {
returnează 0;
}
}