---
url: /docs/forms/table.md
---
# CatchTable 构建

## 创建表格

要创建一个表格，请使用 API 端点实例化 `Table` 类：

```php
use CatchForm\Table\Table;

$table = new Table('https://api.example.com/data');
```

## 配置表格属性

您可以使用流畅的方法配置表格的各种属性。以下是一些常见的配置示例：

### 设置表格高度

```php
$table->height('400px'); // 设置表格的高度。
```

### 设置表格边框

```php
$table->border('1px solid #ccc'); // 设置表格的边框样式。
```

### 设置分页

```php
$table->pagination(true) // 启用分页。
      ->limit(10) // 设置每页的项目数量。
      ->page(1); // 设置当前页码。
```

### 设置尺寸

```php
$table->size('large'); // 设置表格的尺寸（例如：'large'、'small'）。
```

## 添加列

您可以使用 `column` 方法在表格中定义列：

```php
$table->column('姓名', 'name') // 添加一个标签为 '姓名'，属性为 'name' 的列。
      ->column('邮箱', 'email'); // 添加一个标签为 '邮箱'，属性为 'email' 的列。
```

## 搜索功能

表单构建器允许您为表格添加搜索功能：

```php
$table->isShowSearch(true); // 启用搜索功能。
$table->input('按姓名搜索', 'name'); // 添加一个用于按姓名搜索的输入框。
$table->select('按状态过滤', 'status'); // 添加一个用于按状态过滤的选择框。
```

## JSON 序列化

`Table` 类实现了 `JsonSerializable` 接口，允许您轻松将表格配置转换为 JSON 格式：

```php
$json = json_encode($table); // 将表格配置转换为 JSON 格式。
```

## 可用方法

| 方法                                                  | 描述                                       |
| ----------------------------------------------------- | ------------------------------------------ |
| `height(string $height)`                              | 设置表格的高度。                           |
| `border(string $border)`                              | 设置表格的边框样式。                       |
| `size(string $size)`                                  | 设置表格的尺寸（例如：'large'、'small'）。 |
| `pagination(bool $pagination)`                        | 启用或禁用分页。                           |
| `limit(int $limit)`                                   | 设置每页的项目数量。                       |
| `page(int $page)`                                     | 设置当前页码。                             |
| `layout(string $layout)`                              | 设置表格的布局。                           |
| `sort(array $sort)`                                   | 设置表格的排序选项。                       |
| `showOperation(bool $isShow)`                         | 显示或隐藏表格中的操作。                   |
| `showTools(bool $isShow)`                             | 显示或隐藏工具栏。                         |
| `primaryName(string $name)`                           | 设置主键名称。                             |
| `rowKey(string $key)`                                 | 设置表格的行键。                           |
| `defaultParams(array $params)`                        | 设置表格的默认参数。                       |
| `destroyConfirm(string $text)`                        | 设置删除操作的确认文本。                   |
| `dialog($width, string $height)`                      | 设置对话框的宽度和高度。                   |
| `export(string $url, bool $isShow)`                   | 配置导出功能。                             |
| `isShowSearch(bool $isShow)`                          | 显示或隐藏搜索功能。                       |
| `columns(Closure $fn)`                                | 使用闭包定义列。                           |
| `filter(Closure $fn)`                                 | 使用闭包定义过滤器。                       |
| `jsonSerialize()`                                     | 将表格属性序列化为 JSON。                  |
| `column(string $label, string $props = '')`           | 向表格添加列。                             |
| `search(string $label)`                               | 创建一个搜索输入框。                       |
| `input(string $label, string $name)`                  | 添加一个输入搜索字段。                     |
| `select(string $label, string $name)`                 | 添加一个选择搜索字段。                     |
| `number(string $label, string $name)`                 | 添加一个数字搜索字段。                     |
| `date(string $label, string $name)`                   | 添加一个日期搜索字段。                     |
| `datetime(string $label, string $name)`               | 添加一个日期时间搜索字段。                 |
| `range(string $label, string $name, array $children)` | 添加一个范围搜索字段。                     |

## 示例

以下是如何创建一个具有各种配置的表格的完整示例：

```php
use CatchForm\Table\Table;

$table = new Table('https://api.example.com/data');

$table->height('400px') // 设置表格的高度。
      ->border('1px solid #ccc') // 设置表格的边框样式。
      ->pagination(true) // 启用分页。
      ->limit(10) // 设置每页的项目数量。
      ->page(1) // 设置当前页码。
      ->size('large') // 设置表格的尺寸。
      ->showTools(true) // 显示工具栏。
      ->primaryName('id') // 设置主键名称。
      ->isShowSearch(true) // 启用搜索功能。
      ->input('按姓名搜索', 'name') // 添加一个用于按姓名搜索的输入框。
      ->select('按状态过滤', 'status') // 添加一个用于按状态过滤的选择框。
      ->column('姓名', 'name') // 添加一个标签为 '姓名' 的列。
      ->column('邮箱', 'email'); // 添加一个标签为 '邮箱' 的列。

$json = json_encode($table); // 将表格配置转换为 JSON 格式。
```
