Drupal 8 路由 - _controller 的参数

Drupal 8 Routing - Parameters to _controller

my_module.content: 路径:'/admin/my_module/{方法}' 默认值: _controller: '\Drupal\my_module\Controller\MyModuleController::%{method}' // 不工作

如何向_controller 发送参数?在控制器的方法之间切换

谢谢!

在路由中你有这样的东西

example.content:
  path: '/example' 
  defaults: 
    _controller: '\Drupal\example\Controller\ExampleController::content' 
  requirements: 
    _permission: 'access content' 

从 URL 中给出参数:

Add a variable you want to receive in the controller later. NOTICE: path: '/example/{id_param}'

example.content:
  path: '/example/{id_param}' 
  defaults: 
    _controller: '\Drupal\example\Controller\ExampleController::content' 
  requirements: 
    _permission: 'access content' 

现在,在控制器中:

你会有这样的东西

function content($id_param) {
  echo($id_param);
}

这会打印您传递给 URL 的任何内容。例如 yourdrupalsite.com/example/1920

打印

1920

向表单传递参数:

MODULE_NAME.contactform_results:
  path: '/contactform/results/{PARAMETER}'
  defaults:
    _title: 'Contact Form Submissions'
    _form: '\Drupal\MODULE_NAME\Form\TicketSendingForm'
  requirements:
    _permission: 'access control'

然后在表单生成器函数中

  public function buildForm(array $form, FormStateInterface $form_state, $PARAMETER = null) {
      echo ($PARAMETER);
  }

如果您想将参数转换为实体(fx。一个 ID),请注意参数不能有下划线 - 或者使用驼峰式。

example.entity:
  path: '/entity/{entityName}'
  defaults: 
    _controller: '\Drupal\example\Controller\ExampleController::content' 
  requirements: 
    _permission: 'access content' 
  options:
    parameters:
      entityName:
        type: entity:entity_name