Ajouter un onglet / une tâche locale à un nœud

10

J'ai créé un module appelé hotel_reviews.

J'ai créé le nœud d'itinéraire / {node} / reviews à l'aide de hotel_reviews.routing.yml .

hotel_reviews.content:
  path: '/node/{node}/reviews'
  defaults:
    _controller: '\Drupal\hotel_reviews\Controller\ReviewsController::content'
    _title: 'Reviews'
  requirements:
    _permission: 'access content'

J'ai ensuite essayé d'ajouter une tâche locale en utilisant hotel_reviews.links.task.yml .

hotel_reviews.content:
  route_name: hotel_reviews.content
  title: 'Reviews'
  base_route: node.view
  weight: 100

Je peux maintenant accéder au contenu défini par mon contrôleur à node/1/reviews, mais quand je vais dans node/1Je ne vois pas d'onglet d'avis.

Qu'est-ce que je fais mal?

J'ai utilisé la documentation suivante jusqu'à présent:

Felix Eve
la source

Réponses:

14

Votre itinéraire de base est incorrect. Vous devez utiliser la route que le nœud utilise pour / node / 1. Ce n'est pas node.view. C'est entity.node.canonical.

Berdir
la source
3
C'est similaire à ce qui est fait à partir du module Tracker dans son fichier tracker.links.task.yml pour l'onglet "Activity" (/ user / {user} / activity) pour lequel l'itinéraire de base est entity.user.canonical. (J'ai ajouté cet exemple comme rappel pour moi-même, en espérant que cela aiderait aussi les autres utilisateurs.)
kiamlaluno
1
Cela a très bien fonctionné pour moi. Merci ... Mais ça passe du thème admin au thème front-end ... Des réflexions sur la façon de le garder avec le thème admin? Merci!
Delford Chaffin
1
Peu importe ... l'a trouvé ... laissant la réponse ici pour les autres: (dans la définition de l'itinéraire) options: _admin_route: TRUE
Delford Chaffin