如何使用select查询在drupal 8中创建表单?

时间:2016-10-25 07:42:54

标签: drupal-modules drupal-8

我的数据库中有一张表。我想使用该表的数据并创建该数据的形式。我创建了一个模块并创建了一个form.php页面。在函数中编写了select查询,但是如何从该数据中创建表单?

1 个答案:

答案 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'
  • 清除CMS缓存
  • 转到People =&gt;权限,启用相关用户角色的权限。

然后,浏览您的页面“ admin / config / students / list