Drupal 8获取空的$ _GET变量

时间:2018-12-13 21:02:41

标签: drupal-8

我正在使用Drupal 8,并且试图接收一个名为id的get变量,该URL看起来像http://localhost/drp/listado/editar/2

这是控制器中的功能

public function edit(Request $request){

    $id = $request->query->get('id');
    $conexion = \Drupal::database();
    $query = $conexion->query("Select * from node where nid = ".$id);
    $result = $query->fetchAll();

  return array(
      '#id' => $id,
      '#datos' => $result,
      '#theme' => 'editar',
      '#titulo' => 'Editar'
      );

  }

但是我在报告/数据库日志中得到了这个错误

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1: Select * from node where nid =;

这是custom_controller.routing.yml

custom_controller.editar:
  path: '/listado/editar/{id}'
  defaults:
    _controller: '\Drupal\custom_controller\Controller\ListController::edit'
    _title: 'Edit'
  requirements:
    _permission: 'access_content'

它没有得到变量的值,欢迎任何帮助,谢谢

2 个答案:

答案 0 :(得分:1)

我认为您的控制器接收的第一个参数是id,第二个参数是自动请求。在这里https://www.drupal.org/docs/8/api/routing-system/using-parameters-in-routes

也许您可以打印第一个参数和die()的内容,以检查Drupal传递的值。

答案 1 :(得分:1)

首先安装devel模块并转储$request变量。点击网址后,您将获得id参数。