【发布时间】:2016-10-25 07:42:53
【问题描述】:
我的数据库中有一个表。我想使用该表的数据并创建该数据的形式。我创建了一个模块并制作了一个 form.php 页面。在函数中编写了选择查询,但如何从该数据中生成表单?
【问题讨论】:
我的数据库中有一个表。我想使用该表的数据并创建该数据的形式。我创建了一个模块并制作了一个 form.php 页面。在函数中编写了选择查询,但如何从该数据中生成表单?
【问题讨论】:
我相信您想创建表格数据的列表页面。以下是如何创建带有分页和列排序的表格列表。
假设您有一个名为“students”的表,其中包含以下字段。 ID、姓名、电子邮件
1.在以下路径中的模块中创建一个控制器。 modules/your_module/Src/Controller/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 文件,文件名如下,代码如下。 modules/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.要创建权限,您可以在模块中创建以下文件。 modules/your_module/your_module.permissions.yml
access students list:
title: 'Access students list page'
然后,浏览您的页面“admin/config/students/list”
【讨论】: