简单的使用:
$page = TablePage::gen()->setPageTitle('介绍页面')->setFilterForm(['buttons' => [ButtonAction::gen()->setLabel('查询')->setType('submit'),ButtonAction::gen()->setLabel('重置')->setType('reset'),],'fields' => [InputTextField::gen()->setId('keyword')->setLabel('关键词')->setInputProps(['placeholder' => '这里是提示内容',]),DateRangePickerField::gen()->setId('filter_created_at')->setLabel('进行中'),],])->setTable(['buttons' => [DrawerAction::gen()->setLabel('新建')->setType('primary')->setIcon('plus')->setFormWidth(800)->setFormTitle('抽屉的标题')->setFormFields([SelectGoods::gen()->setId('goods')//这相当于表单的name->setLabel('商品选择器'),InputNumberField::gen()->setId('InputNumberField')->setLabel('数字输入框')->setRules([['required' => true, 'message' => 'InputNumberField']]),//表单验证规则InputTextField::gen()->setId('文本输入框')->setLabel('InputTextField'),LongTextField::gen()->setId('长文本输入框')->setLabel('LongTextField'),DateTimePickerField::gen()->setId('DateTimePickerField')->setLabel('时间选择器'),DateRangePickerField::gen()->setId('DateRangePickerField')->setLabel('时间范围选择器'),SelectField::gen()->setId('SelectField')->setLabel('下拉选择框')->setInputProps(['options' => [['label' => '允许', 'value' => 1],['label' => '禁止', 'value' => 0],],]),BraftEditor::gen()->setId('rule')->setLabel('富文本编辑器'),])->setFormOkApi(''),//这是提交时要调用的接口],'scroll' => ['x' => 1500,'y' => 300,],//这是当表格列过多或行过多时使用的参数,是表格可以滑动'columns' => [TextColumn::gen()->setTitle('编号')->setFixed('left')->setWidth(80)->setDataIndex('cut_per_time'),TextColumn::gen()->setTitle('可砍价总次数')->setDataIndex('cut_total_time'),DateTimeColumn::gen()->setTitle('开始时间')->setDataIndex('start_at')->setSorter(true)->setTimestampFormat('YYYY-MM-DD HH:mm:ss'),DateTimeColumn::gen()->setTitle('结束时间')->setDataIndex('end_at')->setSorter(true)->setTimestampFormat('YYYY-MM-DD HH:mm:ss'),FilterColumn::gen()->setTitle('状态')->setDataIndex('status')->setFilters([['text' => '启用', 'value' => 1],['text' => '禁用', 'value' => 0],]),ActionColumn::gen()->setTitle('操作')->setFixed('right')->setWidth(150)->setButtons([DrawerAction::gen()->setLabel('编辑抽屉的label')->setType('primary')->setIcon('plus')->setFormTitle('编辑抽屉的标题')->setFormWidth(800)->setFormFields([SelectGoods::gen()->setId('goods')//这相当于表单的name->setLabel('商品选择器'),InputNumberField::gen()->setId('InputNumberField')->setLabel('数字输入框')->setRules([['required' => true, 'message' => 'InputNumberField']]),//表单验证规则InputTextField::gen()->setId('文本输入框')->setLabel('InputTextField'),LongTextField::gen()->setId('长文本输入框')->setLabel('LongTextField'),DateTimePickerField::gen()->setId('DateTimePickerField')->setLabel('时间选择器'),DateRangePickerField::gen()->setId('DateRangePickerField')->setLabel('时间范围选择器'),SelectField::gen()->setId('SelectField')->setLabel('下拉选择框')->setInputProps(['options' => [['label' => '允许', 'value' => 1],['label' => '禁止', 'value' => 0],],]),BraftEditor::gen()->setId('rule')->setLabel('富文本编辑器'),])->setFormOkApi('adminEditBargainGoods'),ApiCallAction::gen()->setLabel('删除')->setApiName('adminDeleteBargainGoods')->setConfirmText('是否确认要删除?注意操作无法恢复'),]),],'list' => [],//这里是表格的数据,格式为array'pagination' => [],]);return (array)$page;
页面效果:

同样的效果可以使用pengpai\libs\pageBuilder\pages\AdminListPage来更便捷的实现:
<?php
namespace pengpai\procedures\adminDemo;
use pengpai\libs\db\ActiveQuery;
use pengpai\libs\pageBuilder\actions\ApiCallAction;
use pengpai\libs\pageBuilder\actions\ButtonAction;
use pengpai\libs\pageBuilder\actions\DrawerAction;
use pengpai\libs\pageBuilder\columns\ActionColumn;
use pengpai\libs\pageBuilder\columns\DateTimeColumn;
use pengpai\libs\pageBuilder\columns\FilterColumn;
use pengpai\libs\pageBuilder\columns\TextColumn;
use pengpai\libs\pageBuilder\fields\BraftEditor;
use pengpai\libs\pageBuilder\fields\DateRangePickerField;
use pengpai\libs\pageBuilder\fields\DateTimePickerField;
use pengpai\libs\pageBuilder\fields\InputNumberField;
use pengpai\libs\pageBuilder\fields\InputTextField;
use pengpai\libs\pageBuilder\fields\LongTextField;
use pengpai\libs\pageBuilder\fields\SelectField;
use pengpai\libs\pageBuilder\fields\SelectGoods;
use pengpai\libs\pageBuilder\pages\AdminListPage;
use yii\base\InvalidConfigException;
class AdminTestDemo extends AdminListPage
{
/**
* 获取页面标题
* @return string
*/
public function getPageTitle(): string
{
return '介绍页面';
}
/**
* 设置筛选表单
* @return array
*/
public function renderFilterFormFields(): array
{
return [
ButtonAction::gen()
->setLabel('查询')
->setType('submit'),
ButtonAction::gen()
->setLabel('重置')
->setType('reset'),
];
}
/**
* 设置筛选按钮
* @return array
*/
public function renderFilterFormButtons(): array
{
return [
InputTextField::gen()
->setId('keyword')
->setLabel('关键词')
->setInputProps([
'placeholder' => '这里是提示内容',
]),
DateRangePickerField::gen()
->setId('filter_created_at')
->setLabel('进行中'),
];
}
/**
* 设置表格头部按钮
* @return array
*/
public function renderHeaderButtons(): array
{
return [
DrawerAction::gen()
->setLabel('新建')
->setType('primary')
->setIcon('plus')
->setFormWidth(800)
->setFormTitle('抽屉的标题')
->setFormFields([
SelectGoods::gen()
->setId('goods')//这相当于表单的name
->setLabel('商品选择器'),
InputNumberField::gen()
->setId('InputNumberField')
->setLabel('数字输入框')
->setRules([['required' => true, 'message' => 'InputNumberField']]),//表单验证规则
InputTextField::gen()
->setId('文本输入框')
->setLabel('InputTextField'),
LongTextField::gen()
->setId('长文本输入框')
->setLabel('LongTextField'),
DateTimePickerField::gen()
->setId('DateTimePickerField')
->setLabel('时间选择器'),
DateRangePickerField::gen()
->setId('DateRangePickerField')
->setLabel('时间范围选择器'),
SelectField::gen()
->setId('SelectField')
->setLabel('下拉选择框')
->setInputProps([
'options' => [
['label' => '允许', 'value' => 1],
['label' => '禁止', 'value' => 0],
],
]),
BraftEditor::gen()->setId('rule')->setLabel('富文本编辑器'),
])
->setFormOkApi(''),//这是提交时要调用的接口
];
}
/**
* 设置页面说明
* @return array|null
*/
public function renderAlertConfig(): ?array
{
return [
];
}
/**
* 设置表格字段
* @return array
* @throws InvalidConfigException
*/
public function renderColumns(): array
{
return [
TextColumn::gen()
->setTitle('编号')
->setFixed('left')
->setWidth(80)
->setDataIndex('cut_per_time'),
TextColumn::gen()
->setTitle('可砍价总次数')
->setDataIndex('cut_total_time'),
DateTimeColumn::gen()
->setTitle('开始时间')
->setDataIndex('start_at')
->setSorter(true)
->setTimestampFormat('YYYY-MM-DD HH:mm:ss'),
DateTimeColumn::gen()
->setTitle('结束时间')
->setDataIndex('end_at')
->setSorter(true)
->setTimestampFormat('YYYY-MM-DD HH:mm:ss'),
FilterColumn::gen()
->setTitle('状态')
->setDataIndex('status')
->setFilters([
['text' => '启用', 'value' => 1],
['text' => '禁用', 'value' => 0],
]),
ActionColumn::gen()
->setTitle('操作')
->setFixed('right')
->setWidth(150)
->setButtons([
DrawerAction::gen()
->setLabel('编辑抽屉的label')
->setType('primary')
->setIcon('plus')
->setFormTitle('编辑抽屉的标题')
->setFormWidth(800)
->setFormFields([
SelectGoods::gen()
->setId('goods')//这相当于表单的name
->setLabel('商品选择器'),
InputNumberField::gen()
->setId('InputNumberField')
->setLabel('数字输入框')
->setRules([['required' => true, 'message' => 'InputNumberField']]),//表单验证规则
InputTextField::gen()
->setId('文本输入框')
->setLabel('InputTextField'),
LongTextField::gen()
->setId('长文本输入框')
->setLabel('LongTextField'),
DateTimePickerField::gen()
->setId('DateTimePickerField')
->setLabel('时间选择器'),
DateRangePickerField::gen()
->setId('DateRangePickerField')
->setLabel('时间范围选择器'),
SelectField::gen()
->setId('SelectField')
->setLabel('下拉选择框')
->setInputProps([
'options' => [
['label' => '允许', 'value' => 1],
['label' => '禁止', 'value' => 0],
],
]),
BraftEditor::gen()->setId('rule')->setLabel('富文本编辑器'),
])
->setFormOkApi('adminEditBargainGoods'),
ApiCallAction::gen()
->setLabel('删除')
->setApiName('adminDeleteBargainGoods')
->setConfirmText('是否确认要删除?注意操作无法恢复'),
]),
];
}
/**
* 页面的查询 query
* @return ActiveQuery
* @throws InvalidConfigException
*/
public function getQuery(): ?ActiveQuery
{
// 这里返回一个 ActiveQuery 如 MemberEntity::find()->where([]);
}
/**
* 页面数据
* @return array
* @throws InvalidConfigException
*/
public function getList(): array
{
// 返回当前页面的数据 :
$models = $this->getDataProvider()->getModels();
foreach ($models as &$model) {
$model = $model->getAdminArray();
}
unset($model);
return $models;
}
}
更多的方法请查看AdminListPage类,页面建议尽量使用AdminListPage来构造,这里涉及到权限的配置;
