markfullmer / datainterface
用于从CSV文件过滤记录的Web界面
1.1.0
2022-09-18 22:29 UTC
Requires
- guzzlehttp/guzzle: ^7.5
- league/csv: ^9.8
README
https://github.com/markfullmer/datainterface
这个 PHP 库将自动解析 CSV 文件并生成一个搜索界面,结果以表格形式显示。
示例
该库以包含标题行的CSV文件作为输入,以及可过滤的列名和应在表格中显示的列。库提供两种主要的渲染输出方法:表单和表格。
规范与用法
- 创建带有标题行的标准格式CSV文件。以下是一个简单的示例
Artist,Title,Year,Genre
America,America,1971,Rock
Eric Andersen,Bout Changes 'n' Things Take 2,1966,Rock
- 按照标准方式将此PHP库添加到项目中
composer require markfullmer/datainterface
- 将数据实例化为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
。
- 根据需要渲染界面部分
echo $app->options['title']; echo $app->buildForm(); echo $app->buildTable();
功能
- 元数据列可以有多个值。这些值应通过分号分隔。例如,对于与“Genre”相关“Horror”和“Thriller”的条目,CSV文件的该元数据行应输入为“Horror;Thriller”。
可能的增强
- 支持其他数据结构输入,例如JSON
- 关键字搜索(以参数形式接受列名作为目标)
- 缓存数据解析以提高过滤性能