我的数据库中有一个表.我想使用该表的数据并创建该数据的形式.我创建了一个模块并创建了一个form.php页面.在函数中编写了select查询但是如何从该数据中创建表单?
我相信你想创建表数据的列表页面.以下是如何使用分页和列排序创建表格列表.
假设您有一个名为"students"的表,其中包含以下字段.id,姓名,电子邮件
1.在以下路径中的模块中创建一个控制器. 模块/ your_module/Src的/控制器/ StudentsController.php
<?php
namespace Drupal\your_module\Controller;
use Drupal\Core\Controller\ControllerBase;
class StudentsController extends ControllerBase {
public function __construct() {
}
public function list() {
$header = array(
array('data' => t('ID'), 'field' => 'st.id'),
array('data' => t('Name'), 'field' => 'st.name'),
array('data' => t('Email'), 'field' => 'st.email'),
);
$query = db_select('students', 'st')
->fields('st', array('id', 'name', 'email'))
->extend('Drupal\Core\Database\Query\TableSortExtender')
->extend('Drupal\Core\Database\Query\PagerSelectExtender')
->orderByHeader($header);
$data = $query->execute();
$rows = array();
foreach ($data as $row) {
$rows[] = array('data' => (array) $row);
}
$build['table_pager'][] = array(
'#type' => 'table',
'#header' => $header,
'#rows' => $rows,
);
$build['table_pager'][] = array(
'#type' => 'pager',
);
return $build;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,您的控制器操作已准备就绪,现在您必须添加路由才能创建此列表页面的路径.
2.在模块文件夹中创建routing.yml文件作为下面提到的文件名,以及下面的代码. 模块/ your_module/your_module.routing.yml
students.list:
path: 'admin/config/students/list'
defaults:
_controller: 'Drupal\your_module\Controller\StudentsController::list'
_title: 'Students List'
requirements:
_permission: 'access students list'
Run Code Online (Sandbox Code Playgroud)
3.要创建权限,可以在模块中创建以下文件. 模块/ your_module/your_module.permissions.yml
access students list:
title: 'Access students list page'
Run Code Online (Sandbox Code Playgroud)
然后,浏览您的页面" admin/config/students/list "