【问题标题】:How to use select query for creating form in drupal 8?如何使用选择查询在 drupal 8 中创建表单?
【发布时间】:2016-10-25 07:42:53
【问题描述】:

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

【问题讨论】:

    标签: drupal-modules drupal-8


    【解决方案1】:

    我相信您想创建表格数据的列表页面。以下是如何创建带有分页和列排序的表格列表。

    假设您有一个名为“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'
    
    • 清除 CMS 缓存
    • 转到人员 => 权限,启用相关用户角色的权限。

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

    【讨论】:

      猜你喜欢
      • 2016-02-29
      • 2016-08-07
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      相关资源
      最近更新 更多