Spécifier thème admin par chemin échantillon/exemple de code
Énigme; vous avez créé un webform qui dépend sur votre thème pour le contenu , votre thème admin dans ce cas n'est pas votre préférence désiré.
Solution: un theme_negotiator
ajoute une classe dans
mon_module/src/Theme/Negotiatrice.php
une service dans:
mon_module/mon_module.service.yml
Dans le fichier mon_module.service.yml ajoute le yml suivant:
service:
theme.negotiator.mon_module:
class: Drupal\mon_module\Theme\Negotiatrice
tags:
- { name: theme_negotiator, priority: -29 }
Dans la classe, ajoute le code php suivant:
<?php
/**
* @file
* Contains \Drupal\mon_module\Theme\Negotiatrice
*/
namespace Drupal\mon_module\Theme;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Theme\ThemeNegotiatorInterface;
class Negotiatrice implements ThemeNegotiatorInterface
{
/**
* {@inheritdoc}
*/
public function applies(RouteMatchInterface $route_match)
{
$current_route = $route_match->getRouteName();
// Nécéssaire et correspond à la condition dans determineActiveTheme.
if ($current_route == 'entity.webform_submission.edit_form') {
return TRUE;
}
// Comme d'habitude.
return FALSE;
}
/**
* {@inheritdoc}
*/
public function determineActiveTheme(RouteMatchInterface $route_match)
{
// Cette condition semble faire ce que je m'attends.
if ($route_match->getRouteName() == 'entity.webform_submission.edit_form')
{
// Utilisent le thème 'bootstrap' pour cette route/ce chemin.
return 'bootstrap';
}
// Sinon, claro comme d'habitude.
return 'claro';
}
}