简单的使用:
$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来构造,这里涉及到权限的配置;