Dans Drupal 8, quel est le twig nom de modèle pour un formulaire de modification de nœud pour un type de contenu personnalisé appelé par exemple "appareil" ".
J'apprécierais votre aide. Merci !
Vous pourriez jeter un oeil à ce commentaire . Il suggère d'ajouter une suggestion de thème comme celle-ci:
Cela semble bizarre, mais c'est le mieux que je puisse trouver. Ajoutez d'abord ce code à votre fichier admin .theme (probablement un sous-thème de Seven):
function NAMEOFTHEME_theme_suggestions_alter(array &$suggestions, array $variables, $hook) { if ($hook == 'node_edit_form') { if ($node = \Drupal::routeMatch()->getParameter('node')) { $content_type = $node->bundle(); } else { $current_path = \Drupal::service('path.current')->getPath(); $path_args = explode('/', $current_path); $content_type = $path_args[3]; } $suggestions[] = 'node_edit_form__' . $content_type; } }
Ensuite, créez des modèles twig dans le répertoire de modèles de votre thème sous la forme node-edit-form - NODE-TYPE-SEPARATED-WITH-DASHES.html .twig .
Si vous souhaitez créer un thème pour un formulaire spécifique, par exemple le formulaire de modification d'un type de nœud, alors tout ce que vous avez à faire est
/**
* Implements hook_theme().
*/
function THEMENAME_theme($existing, $type, $theme, $path) {
return [
// form id (weather it's an edit node for or a new node form)
'node_NODE_CONTENT_TYPE_edit_form' => [
'render element' => 'form',
],
];
}
Ensuite, créez un fichier twig node-NODE-CONTENT-TYPE-edit-form.html.twig
et le thème comme ceci:
{{ form.field_MACHINE_NAME_OF_FIELD }}
{{ form.field_MACHINE_NAME_OF_FIELD2 }}
...
{# this prints out the submit button #}
{{ form.actions }}
{# you need to have this for the form to work properly #}
{{ form|without('name', 'field_MACHINE_NAME_OF_FIELD2', 'field_MACHINE_NAME_OF_FIELD3') }}
Sur la base de la réponse de Neograph734 et de Berdir son commentaire à ce sujet, le type de nœud est en effet déjà disponible (pas besoin de le sortir du chemin). Je recommanderais d'ajouter la suggestion de thème en utilisant:
/**
* Implements hook_theme_suggestions_HOOK_alter() for node_edit_form.
*/
function example_theme_suggestions_node_edit_form_alter(array &$suggestions, array $variables) {
$route_match = \Drupal::routeMatch();
if ($node = $route_match->getParameter('node')) {
// When editing an existing node, add the node's bundle as the theme hook
// suggestion.
$suggestions[] = $variables['theme_hook_original'] . '__' . $node->bundle();
} elseif ($node_type = $route_match->getParameter('node_type')) {
// When a new node is created, the node type (object) is provided.
$suggestions[] = $variables['theme_hook_original'] . '__' . $node_type->id();
}
return $suggestions;
}
Cela vous permet d'écrire des modèles Twig et/ou des fonctions de prétraitement ciblés. Lorsque le nom de machine de votre type de nœud est périphérique, votre modèle Twig doit être nommé node-edit-form--device.html.twig
Et votre fonction de prétraitement example_preprocess_node_edit_form__device(&$variables)
, où exemple est le nom de votre thème (ou module).