Drupal 8 カスタムテーブルのデータ一覧表示

Drupal 8 カスタムテーブルのデータ一覧表示

Drupal標準のコンテンツではなく、既存のテーブルのデータ一覧を表示する場合、Views Custom Tableモジュールを利用することにより、テーブル内容をViewsに表示することができますが、今回は、カスタムモジュールを作成し、以下のような「employee」テーブルをDrupal上に表示します。

employeeテーブル

カスタムモジュールの作成

今回のカスタムモジュールも前回作成したHello Worldモジュール同様に、ControllerBaseを継承するコントローラ クラスを作成します。

モジュール作成に必要なファイルとしては、前回と同様以下の3種類のファイルです。


modules/
└──  custom/
     └──  employee_list/
          ├── employee_list.info.yml
          ├── employee_list.routing.yml
          └── src/
              └── Controller/
                  └── EmployeeListController.php

employee_list.info.ymlの内容としては、以下のように記述します。


name: Employeeの一覧
description: カスタムテーブルemployeeの一覧表示
package: Custom

type: module
core: 8.x

employee_list.routing.ymlの内容としては、以下のように記述します。


employee_list.list:
  path: '/list_employee'
  defaults:
    _controller: '\Drupal\employee_list\Controller\EmployeeListController::list'
    _title: 'Employeeの一覧'
  requirements:
    _permission: 'access content'

上記の記述により、パス'/list_employee'にアクセスすると、タイトルが'Employeeの一覧'のページが表示され、ページには、EmployeeListControllerクラスのlistメソッドの内容が表示されます。

EmployeeListController.phpには、以下のように記述します。


<?php

namespace Drupal\employee_list\Controller;

use Drupal\Core\Controller\ControllerBase;

/**
 * EmployeeListControllerクラス
 */
class EmployeeListController extends ControllerBase {

  /**
   *  employeeテーブルからのリストの取得
   */
  function queryEmployeeList($header) {

    // employeeテーブルのqueryを行う
    $query = \Drupal::database()->select('employee', 'emp');
    $query->fields('emp', ['employee_id','dept_code','name','kana','position','telephone','mail']);
    // ヘッダーにソート項目を指定
    $table_sort = $query->extend('Drupal\Core\Database\Query\TableSortExtender')->orderByHeader($header);
    // ページャーを使用。表示件数:5行
    $pager = $table_sort->extend('Drupal\Core\Database\Query\PagerSelectExtender')->limit(5);
    $results = $pager->execute()->fetchAll();

    // 出力用の配列を初期化
    $output = array();

    // query結果を出力用の配列にセット
    foreach ($results as $row) {
      $output[] = [
        'employee_id' => $row->employee_id,
        'dept_code' => $row->dept_code,
        'name' => $row->name,
        'kana' => $row->kana,
        'position' => $row->position,
        'telephone' => $row->telephone,
        'mail' => $row->mail,
      ];
    }

    return $output;
  }

  /**
   * employeeテーブルの一覧表示
   *
   * @return array
   *   Return markup array.
   */
  public function list() {

    // 'field'で指定された項目がソート項目となる
    $header = [
      [ 'data' => '社員ID',     'field' => 'employee_id', 'sort' => 'asc' ],
      [ 'data' => '部門コード', 'field' => 'dept_code' ],
      [ 'data' => '名前',       ],
      [ 'data' => 'カナ',       'field' => 'kana' ],
      [ 'data' => '職位',       ],
      [ 'data' => '電話',       ],
      [ 'data' => 'メール',     ],
    ];

    $output = $this->queryEmployeeList($header);

    $form['table'] = [
      '#type' => 'table',
      '#header' => $header,
      '#rows' => $output,
      '#empty' => 'データがありません',
    ];

    // pagerの表示
    $form['pager'] = [
      '#type' => 'pager'
    ];

    return $form;
  }

}

上記のように、ページャーの指定、ヘッダー項目のソートの指定を行うことができ、パス'/list_employee'にアクセスすると、以下のように表示されます。

employee_listモジュール

ソースファイル

上記のemployee_listモジュールのソースファイルは以下に置きました。

カテゴリー

コメント

Mnfgjw Stendra Discount Direct Pharmacy https://newfasttadalafil.com/ - cialis price cialis levitra viagra compare Wcioqy Tludrh <a href=https://newfasttadalafil.com/>Cialis</a> Gnkvwz Pillole Cialis https://newfasttadalafil.com/ - Cialis Rxdirn
名前
saigexy

匿名 (未認証ユーザー) による「」への返信



Boost Your Homestead Workouts in addition to Your Optimal Guide to Health Success!

Do you find yourself ready to elevate your fitness journey plus accomplish incredible results from the ease of your unique home? Our detailed guide to home workouts is definitely here that will help you you achieve success. Within this detailed blog post, we'll investigate the multitude of benefits that come with working out at home plus how it could revolutionize your approach to fitness. From the flexibility of exercising on your own schedule to the convenience of avoiding crowded gyms, home fitness offers unparalleled advantages. We'll as well provide practical tips on the way to structure your workouts for maximum effectiveness, including recommendations for equipment and exercises tailored to your specific goals. Whether you're aiming to lose weight, build muscle, or enhance your overall health and well-being, our purpose should be to equip you together with the knowledge and tools needed to realize lasting success. Say goodbye to limitations as well as hello to limitless potential with home workouts that maximize your fitness journey!



<a href=https://workoutstuff.online/product/womens-sportswear-suit-seamless-gym-clothing-women-gym-yoga-set-fitness-leggingscropped-shirts-workout-sets-tracksuit-outfits/>Achieve Your Fitness Goals in Style with Women Gym Yoga Set Fitness Leggings+Cropped shirts Workout Sets Tracksuit Outfits!</a>
<a href=https://pilotodyssey.com/PO/viewtopic.php?f=1&t=21341>Achieve Your Trimming Fat Goals with Residential Workout Appliances Essentials</a> 7_1368e
名前
MichaelBlalk
<a href=http://bestcialis20mg.com/>buy cialis online</a> GATA6 regulates EMT and tumour dissemination, and is a marker of response to adjuvant chemotherapy in pancreatic cancer
名前
exakece
cialis barato online <a href="https://tadalafilise.cyou/">levitra versus viagra</a> cialis soft tabs 20mg
名前
KevinDup
maximum dosage cialis per day <a href="https://tadalafilise.cyou/">cialis everyday</a> cialis online pharmacy
名前
KevinDup

コメントを追加

CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。
画像CAPTCHA
画像内に表示されている文字列を入力してください。