Drupal 9表格

By admin, 14 一月, 2022

1. 渲染表格

最简单的表格代码如下(如果不知道$form是什么,请先学习examples里的form_api_example) 

    $form['table'] = [
      '#type' => 'table',
      '#header' => $header,
      '#rows' => $rows,
      '#empty' => '暂无记录',
    ];

其中$header是表头数组,$rows是每一行数据。

2. 排序功能

如果我们希望表格能根据表头排序,那么$header可以从简单的一维数组变成复杂的二维数组:

    $header = [
        ['data' => '小测标题', 'field' => 'title'],
        ['data' => '状态', 'field' => 'status'],
        ['data' => '创建者', 'filed' => 'creator'],
        ['data' => '小测日期', 'field' => 'xiaoce_time'],
        ['data' => '最后更新时间', 'field' => 'updated', 'sort' => 'desc'],
        ['data' => '操作'],
    ]; 

其中,field对应数据库查询的字段名,sort属性表示默认的排序列和排序方式,desc必须是小写。

排序功能除了改$form里的$header数组外,还需要改数据库查询语句。很显然只有告诉数据库查询逻辑相关信息,才能做真正的排序:


      $query = $query->extend('Drupal\Core\Database\Query\TableSortExtender')->orderByHeader($header);

3. 分页功能 

插入这一行就能自动渲染分页控件:

    $form[] = ['#type' => 'pager'];

当然了,肯定还要在数据库查询逻辑里指示怎样分页:

    $query = $query->extend('Drupal\Core\Database\Query\PagerSelectExtender')->limit(20);
 

limit(20)的意思是每页显示20行数据。

表格渲染属性参考:https://api.drupal.org/api/drupal/core%21modules%21system%21templates%21table.html.twig/9.0.x 

标签

评论

Restricted HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <img src>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。
验证码
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
请输入"Drupal10"