我的数据库中有一张表。我想使用该表的数据并创建该数据的形式。我创建了一个模块并创建了一个form.php页面。在函数中编写了select查询,但是如何从该数据中创建表单?
答案 0 :(得分:5)
我相信你想创建表数据的列表页面。以下是如何使用分页和列排序创建表格列表。
假设您有一个名为“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;
}
}
因此,您的控制器操作已准备就绪,现在您必须添加路由才能创建此商家信息页的路径。
<强> 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'
第3。要创建权限,您可以在模块中创建以下文件。 模块/ your_module / your_module.permissions.yml
access students list:
title: 'Access students list page'
然后,浏览您的页面“ admin / config / students / list ”