海豚php表格,表格选取(1.4.3+) · DolphinPHP1.5.0完全开发手册-基于ThinkPHP5.1.41LTS的快速开发框架 · 看云...
## addSelectTable('name值', '標題', '提示', '表格列頭' , '表格數據', '選擇內容的url'])
標識符:`selectTable`
>[info]1.4.3或更高版本支持。
>[danger] **注意:該功能僅1.4.3版本以上,并且授權版用戶才有,普通版沒有該功能**。如果您是授權版用戶,請登錄官網后,在補丁下載頁面下載相應補丁。
| 參數 | 含義 | 類型 |
| --- | --- | --- |
| name | name值 | string |
| title | 標題 | string |
| tips | 提示 | string |
| columns | 表格列頭 | array |
| data | 表格數據 | array |
| url | 選擇內容的url | string |
```
$columns = [
'id' => 'ID',
'username' => '用戶名',
'nickname' => '昵稱',
];
// 使用ZBuilder快速創建表單
return ZBuilder::make('form')
->addFormItems([ // 批量添加表單項
['selectTable', 'test', '測試', '', $columns],
])
->fetch();
```
效果:

目前還沒有任何數據,點擊“選擇測試”按鈕可打開彈窗選取表格數據,但必須先設置url。
```
$columns = [
'id' => 'ID',
'username' => '用戶名',
'nickname' => '昵稱',
];
// 使用ZBuilder快速創建表單
return ZBuilder::make('form')
->addFormItems([ // 批量添加表單項
['selectTable', 'test', '測試', '', $columns, [], url('ajax/getUserList')],
])
->fetch();
```
為避免系統檢測節點權限,這里我將代碼寫在ajax控制器,ajax控制沒有繼承admin類,所以不會檢測節點權限。當然,也可以寫在當前控制器,記得在節點管理添加對應的節點即可。
getUserList()方法用ZBuilder創建表格即可。
```
public function getUserList()
{
$data_list = Db::name('admin_user')->paginate();
return ZBuilder::make('table')
->addColumns([
['id', 'ID'],
['username', '用戶名'],
['nickname', '昵稱']
])
->setRowList($data_list)
->fetch();
}
```
這時候點擊“選擇測試”按鈕會彈出顯示用戶列表。

>[danger]這里有個地方要注意,1.getUserList()方法創建表格顯示的列要和$columns定義的一致,包括列數和位置都要一致。
接下來,需要給表格添加一個頂部按鈕,用于選取數據。
```
public function getUserList()
{
$data_list = Db::name('admin_user')->paginate();
return ZBuilder::make('table')
->addTopButton('select', [
'title' => '確定',
'icon' => 'fa fa-check',
'class' => 'btn btn-primary',
'id' => 'js-confirm',
'data-name' => 'test'
])
->addColumns([
['id', 'ID'],
['username', '用戶名'],
['nickname', '昵稱']
])
->setRowList($data_list)
->fetch();
}
```
添加的頂部按鈕,需要添加id為“`js-confirm`”,并且定義data-name為創建selectTable表單項時的name值,比如上面添加的是
```
['selectTable', 'test', '測試', '', $columns, [], url('ajax/getUserList')],
```
所以按鈕需要添加`data-name=>'test'`
到這里,還需要添加一個js文件
```
public function getUserList()
{
$data_list = Db::name('admin_user')->paginate();
return ZBuilder::make('table')
->addTopButton('select', [
'title' => '確定',
'icon' => 'fa fa-check',
'class' => 'btn btn-primary',
'id' => 'js-confirm',
'data-name' => 'test'
])
->addColumns([
['id', 'ID'],
['username', '用戶名'],
['nickname', '昵稱']
])
->setRowList($data_list)
->js('../extend/form/selectTable/selectTable')
->fetch();
}
```
這時候,點擊“選擇測試”按鈕,彈窗顯示列表,勾選后,點擊“確定”即可。


>[info]因為getUserList方法用ZBuilder創建的,所以你可以使用篩選,排序等等功能。
```
public function getUserList()
{
$map = $this->getMap();
$order = $this->getOrder();
$data_list = Db::name('admin_user')->where($map)->order($order)->paginate();
return ZBuilder::make('table')
->addTopButton('select', [
'title' => '確定',
'icon' => 'fa fa-check',
'class' => 'btn btn-primary',
'id' => 'js-confirm',
'data-name' => 'test'
])
->addColumns([
['id', 'ID'],
['username', '用戶名'],
['nickname', '昵稱']
])
->setSearch('username,nickname')
->addOrder('username,nickname')
->setRowList($data_list)
->js('../extend/form/selectTable/selectTable')
->fetch();
}
```

選取后,會將對應的值回傳到父窗口,提交表單,會自動將所選值發送給服務器,接收的是一個數組,具體可以自己打印`$this->request->post();`查看
>[danger]注意,選取的數據有可能重復,比如選取了兩次一樣的數據

服務器會接收到兩個id為1的數據,這里需要開發者自行過濾,比如:
```
$post = $this->request->post();
$post['test'] = array_unique($post);
```
總結
以上是生活随笔為你收集整理的海豚php表格,表格选取(1.4.3+) · DolphinPHP1.5.0完全开发手册-基于ThinkPHP5.1.41LTS的快速开发框架 · 看云...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电商行业一览表
- 下一篇: CentOS 7.4 64位 .tar.