Drupal 8 - 如何为特定节点类型添加任务和上下文链接?

时间:2016-04-08 10:12:54

标签: drupal

我为base_route创建了一个任务链接和一个上下文链接:entity.node.canonical

mymodule.routing.yml

mymodule.mycustomroute:
  path: '/node/{node}/custom-path'
  defaults:
    _form: '\Drupal\mymodule\Form\MyForm'
  requirements:
    _permission: 'my permission'
    node: '[0-9]+'

mymodule.links.tasks.yml

mymodule.mycustomroute:
  route_name: mymodule.mycustomroute
  base_route: entity.node.canonical
  title: 'my title'

mymodule.links.contextual.yml

mymodule.mycustomroute:
  route_name: mymodule.mycustomroute
  group: node

我的链接显示在我想要的每个节点上的查看/编辑/删除链接旁边。

现在我想知道如何才能使这些链接仅用于特定的节点类型?

2 个答案:

答案 0 :(得分:3)

mymodule / mymodule.routing.yml

case (Time.current.hour)
when 0..9, 21..23
  "Late"
when 9..19
  "Prime"
else
  "Regular"
end

mymodule / src / Access / NodeTypeAccessCheck.php

mymodule.mycustomroute:
  path: '/node/{node}/custom-path'
  defaults:
    _form: '\Drupal\mymodule\Form\MyForm'
  requirements:
    _permission: 'my permission'
    _custom_access: '\Drupal\mymodule\Access\NodeTypeAccessCheck::access'
    _node_types: 'node_type_1,node_type_2,node_type_n'
    node: '\d+'

答案 1 :(得分:-1)

或者您可以在mymodule.links.menu.yml文件中指定路由参数:

mymodule.add_whatever:
  title: 'Add whatever'
  description: 'Add whatever'
  route_name: node.add
  route_parameters: { node_type: 'name_of_node_type' }
  menu_name: main
  weight: 7