markfullmer/datainterface

用于从CSV文件过滤记录的Web界面

1.1.0 2022-09-18 22:29 UTC

This package is auto-updated.

Last update: 2024-08-29 00:00:18 UTC


README

https://github.com/markfullmer/datainterface

这个 PHP 库将自动解析 CSV 文件并生成一个搜索界面,结果以表格形式显示。

示例

该库以包含标题行的CSV文件作为输入,以及可过滤的列名和应在表格中显示的列。库提供两种主要的渲染输出方法:表单和表格。

规范与用法

  1. 创建带有标题行的标准格式CSV文件。以下是一个简单的示例
Artist,Title,Year,Genre
America,America,1971,Rock
Eric Andersen,Bout Changes 'n' Things Take 2,1966,Rock
  1. 按照标准方式将此PHP库添加到项目中
composer require markfullmer/datainterface
  1. 将数据实例化为PHP类对象。以下示例代码指示创建对'Year'和'Genre'(但不是'Artist')的过滤,并在表格中显示'Artist'、'Title'和'Year'。
use markfullmer\datainterface\DataInterface;

$app = new DataInterface([
  'file' => 'records.csv',
  'title' => 'List of LPs',
  'filters' => ['Year', 'Genre'],
  'table_columns' => ['Artist', 'Title', 'Year'],
]);

该库还支持通过HTTP读取CSV数据(包括作为CSV发布的公共Google Sheets)。要使用此方法,提供url参数

$app = new DataInterface([
  'file' => 'https://example.com/records.csv',
  'title' => 'List of LPs',
  'filters' => ['Year', 'Genre'],
  'table_columns' => ['Artist', 'Title', 'Year'],
]);

如果通过HTTP读取数据,出于性能原因,库将URL存储在文件系统中。要刷新请求,请向网站URL添加?reset

  1. 根据需要渲染界面部分
echo $app->options['title'];
echo $app->buildForm();
echo $app->buildTable();

功能

  • 元数据列可以有多个值。这些值应通过分号分隔。例如,对于与“Genre”相关“Horror”和“Thriller”的条目,CSV文件的该元数据行应输入为“Horror;Thriller”。

可能的增强

  • 支持其他数据结构输入,例如JSON
  • 关键字搜索(以参数形式接受列名作为目标)
  • 缓存数据解析以提高过滤性能