Estou tentando criar uma nova guia personalizada que aparece em todas as rotas que são descendentes da entidade. {Entity_type} .canonical. Tentei estender a classe DeriverBase, substituindo especificamente o método getDerivativeDefinitions. Criei a própria guia estendendo LocalTaskDefault e substituindo o método getRouteParameters. A guia aparece quando você visita um caminho de usuário padrão do Drupal, como www.mysite.com/user/1/ ou www.mysite.com/user/1/edit. No entanto, quando adicionamos nossas novas rotas de usuário personalizadas, como www.mysite.com/user/1/subscribe, nenhuma guia é exibida. Existe uma maneira especial de definir tarefas do menu local em rotas personalizadas? Uma amostra do código:
$this->derivatives['recurly.subscription_tab'] = [
'title' => $this->t('Subscription'),
'weight' => 5,
'route_name' => 'recurly.subscription_list',
'base_route' => "entity.$entity_type.canonical",
];
foreach ($this->derivatives as &$entry) {
$entry += $base_plugin_definition;
}
Agradecemos antecipadamente qualquer ajuda.
Respostas:
Conforme sugerido por Berdir, você pode ver o módulo Devel e como ele está implementando isso. O código a seguir foi "extraído" de Devel
1) Crie as rotas
Crie o arquivo mymodule.routing.yml dentro e dentro de defina um retorno de chamada de rota (que é usado para criar as rotas dinâmicas)
Crie a classe MyModuleRoutes para gerar suas rotas dinâmicas em src / Routing
2) Crie as tarefas locais dinâmicas
Crie o arquivo mymodule.links.task.yml e defina um deriver dentro
Crie a classe MyModuleLocalTasks para gerar suas rotas dinâmicas em src / Plugin / Derivative
3) Crie o controlador
Crie a classe MyModuleController em src / Controller
fonte