我正在使用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'
它没有得到变量的值,欢迎任何帮助,谢谢
答案 0 :(得分:1)
我认为您的控制器接收的第一个参数是id
,第二个参数是自动请求。在这里https://www.drupal.org/docs/8/api/routing-system/using-parameters-in-routes
也许您可以打印第一个参数和die()
的内容,以检查Drupal传递的值。
答案 1 :(得分:1)
首先安装devel模块并转储$request
变量。点击网址后,您将获得id参数。