【问题标题】:Drupal 8 Routing - Parameters to _controllerDrupal 8 路由 - _controller 的参数
【发布时间】:2015-08-08 16:46:51
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: drupal controller routing drupal-8


    【解决方案1】:

    在路由中你有这样的东西

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

    从 URL 中提供参数:

    添加一个你想稍后在控制器中接收的变量。 注意:路径:'/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

    【讨论】:

    • 不得不提两个变量必须相同
    【解决方案2】:

    将参数传递给表单:

    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);
      }
    

    【讨论】:

      【解决方案3】:

      如果您想将参数转换为实体(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
      

      【讨论】:

        猜你喜欢
        • 2019-02-22
        • 2019-11-12
        • 2017-02-19
        • 1970-01-01
        • 1970-01-01
        • 2022-01-21
        • 2021-06-30
        • 2019-09-16
        相关资源
        最近更新 更多