🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 内置`http`常用方法和属性 ~~~ // 获取get参数 $params = $this->get; // 获取post参数 $bodyParams = $this->post; // 是否是post请求 $this->isPost; // 是否是get请求 $this->isGet; // 是否是ajax请求(泛指) $this->isAjax; // 是否是ajax请求(非泛指) $this->getIsAjax(false) // 获取当前完整域名 $this->domain; // Json成功响应 return $this->asSuccess(''); // Json失败响应 return $this->asFail(''); // Json未授权响应 return $this->asUnauthorized(''); ~~~ > `get`、`post`内置了数据过滤功能,自动将空字符串转为`null` ### 内置过滤器 ```php // 方法的请求动作定义 public $actionVerbs = []; // 游客方法定义 public $guestActions = []; // 不进行RBAC检查的方法定义 public $undetectedActions = []; ``` 例子: ~~~ <?php // +---------------------------------------------------------------------- // | yii-manager version 1.0.0 // +---------------------------------------------------------------------- // | 日期:2020/8/13 // +---------------------------------------------------------------------- // | 作者:cleverstone // +---------------------------------------------------------------------- namespace app\admin\controllers; use app\models\AdminUser; use app\builder\ViewBuilder; use app\builder\table\Table; use app\builder\helper\DateSplitHelper; use app\builder\common\CommonController; use app\builder\table\ToolbarFilterOptions; use app\builder\table\widgets\SelectConnection; /** * 首页 * @author cleverstone * @since 1.0 */ class IndexController extends CommonController { /** * {@inheritdoc} */ public $actionVerbs = [ 'index' => ['get'], 'add' => ['get', 'post'], 'edit' => ['get', 'post'], 'disable' => ['get', 'post'], ]; /** * {@inheritdoc} */ public $guestActions = [ 'index', 'add', 'edit', 'disable', ]; /** * {@inheritdoc} */ public $undetectedActions = []; /** * Renders the index view for the module * @return string * @throws \yii\base\NotSupportedException * @throws \Throwable * @author cleverstone * @since 1.0 */ public function actionIndex() { $params = $this->get; $tableBuilder = ViewBuilder::table(); $tableBuilder->title = '首页'; $tableBuilder->widget = [ Table::TABLE_TOOL_TOP => '<p style="padding:10px;padding-bottom:0;">这里是工具栏头部</p>', Table::TABLE_TOOL_BOTTOM => '<p style="padding:10px;padding-bottom:0;">这里是工具栏底部</p>', Table::TABLE_PAGE_TOP => '<p style="padding:10px;padding-bottom:0;">这里是分页头部</p>', Table::TABLE_PAGE_BOTTOM => '<p style="padding:10px;padding-bottom:0;">这里是分页底部</p>', ]; $tableBuilder->columns = [ 'username' => table_column_helper('用户名', ['style' => ['min-width' => '100px']]), 'email' => table_column_helper('邮箱', ['style' => ['min-width' => '200px']]), 'an_mobile' => table_column_helper('电话', ['style' => ['min-width' => '100px']], function ($item) { return '+' . $item['an'] . ' ' . $item['mobile']; }), 'status_label' => table_column_helper('状态', ['style' => ['min-width' => '80px']], function ($item) { switch ($item['status']){ case 0: return '<span class="label label-danger">已封停</span>'; case 1: return '<span class="label label-success">正常</span>'; default: return '<span class="label label-default">未知</span>'; } }), 'identify_code' => table_column_helper('邀请码', ['style' => ['min-width' => '100px']]), 'created_at' => table_column_helper('注册时间', ['style' => ['min-width' => '180px']]), 'updated_at' => table_column_helper('更新时间', ['style' => ['min-width' => '180px']]), ]; $tableBuilder->query = function () use ($params) { $start = null; $end = null; if (!empty($params['created_at'])) { list($start, $end) = DateSplitHelper::create($params['created_at'])->reformat()->toArray();; } $query = AdminUser::find() ->filterWhere([ 'and', ['between', 'created_at', $start, $end], ['status' => isset($params['status']) ? $params['status'] : null], [ 'or', ['like', 'username', isset($params['keyword']) ? $params['keyword'] : null], ['like', 'email', isset($params['keyword']) ? $params['keyword'] : null], ] ]) ->select([ 'id', 'username', 'email', 'an', 'mobile', 'status', 'identify_code', 'created_at', 'updated_at', ]); return $query; }; $tableBuilder->orderBy = 'id DESC'; $tableBuilder->primaryKey = 'id'; $tableBuilder->page = true; $tableBuilder->hideCheckbox = false; $tableBuilder->rowActions = [ table_action_helper('ajax', [ 'title' => '解封/封停', 'icon' => 'fa fa-lock', 'route' => 'admin/index/disable', 'params' => ['id', 'status'], 'method' => 'post', ]), //table_action_helper('division', []), table_action_helper('modal', [ 'title' => '编辑', 'icon' => 'fa fa-pencil-square-o', 'route' => 'admin/index/edit', 'width' => '60%', 'height' => '80%', ]), table_action_helper('page', [ 'title' => '新增', 'icon' => 'fa fa-plus', 'route' => 'admin/index/add', ]), ]; $tableBuilder->toolbarRefresh = []; $tableBuilder->toolbarFilter = [ 'title' => '', 'icon' => '', 'columns' => [ 'keyword' => table_toolbar_filter_helper([ 'control' => ToolbarFilterOptions::CONTROL_TEXT, 'label' => '关键词', 'placeholder' => '请填写关键词', ]), /*'email' => table_toolbar_filter_helper([ 'control' => ToolbarFilterOptions::CONTROL_NUMBER, 'label' => '数字', 'placeholder' => '请填写数字', ]),*/ 'created_at' => table_toolbar_filter_helper([ 'control' => ToolbarFilterOptions::CONTROL_DATETIME, 'label' => '注册时间', 'range' => 1, 'placeholder' => '请选择注册时间', ]), /*'date' => table_toolbar_filter_helper([ 'control' => ToolbarFilterOptions::CONTROL_DATE, 'label' => '日期', 'range' => 1, 'placeholder' => '请选择日期', ]), 'year' => table_toolbar_filter_helper([ 'control' => ToolbarFilterOptions::CONTROL_YEAR, 'label' => '年份', 'range' => 1, 'placeholder' => '请选择年份', ]), 'month' => table_toolbar_filter_helper([ 'control' => ToolbarFilterOptions::CONTROL_MONTH, 'label' => '月份', 'range' => 1, 'placeholder' => '请选择月份', ]), 'time' => table_toolbar_filter_helper([ 'control' => ToolbarFilterOptions::CONTROL_TIME, 'label' => '时间', 'range' => 1, 'placeholder' => '请选择时间', ]),*/ 'status' => table_toolbar_filter_helper([ 'control' => ToolbarFilterOptions::CONTROL_SELECT, 'label' => '状态', 'placeholder' => '请选择状态', 'default' => '', 'options' => [ '0' => '封停', '1' => '正常', ], ]), 'custom' => table_toolbar_filter_helper([ 'control' => 'custom', 'widget' => new SelectConnection(), ]), ], ]; $tableBuilder->toolbarExport = [ 'icon' => '', 'name' => '会员列表', 'heads' => ['ID', '用户名', '邮箱', '电话'], 'fields' => ['id', 'username', 'email', 'an', 'mobile'], 'columns' => [ 'id', 'username', 'email', 'mobile' => function ($item) { return '+' . $item['an'] . ' ' . $item['mobile']; }, ], ]; $tableBuilder->toolbarCustom = [ table_toolbar_custom_helper('left', [ 'title' => '禁用', 'icon' => 'glyphicon glyphicon-remove', 'option' => 'ajax', 'method' => 'POST', 'route' => 'admin/index/disable', 'params' => ['id', 'status'], ]), table_toolbar_custom_helper('left', [ 'title' => '新增', 'icon' => 'glyphicon glyphicon-plus', 'option' => 'modal', 'width' => '60%', 'height' => '80%', 'route' => 'admin/index/edit', ]), table_toolbar_custom_helper('left', [ 'title' => '页面', 'icon' => 'glyphicon glyphicon-list-alt', 'option' => 'page', 'params' => ['id', 'status'], 'route' => 'admin/index/edit', ]), ]; return $tableBuilder->render($this); } /** * 新增 * @return string * @throws \Throwable * @author cleverstone * @since 1.0 */ public function actionAdd() { $formBuilder = ViewBuilder::form(); $formBuilder->title = '新增'; return $formBuilder->render($this); } /** * 编辑 * @return string * @author cleverstone * @since 1.0 */ public function actionEdit() { $formBuilder = ViewBuilder::form(); $formBuilder->partial = true; return $formBuilder->render($this); } /** * 禁用 * @return mixed * @author cleverstone * @since 1.0 */ public function actionDisable() { $bodyParams = $this->post; $idMap = explode(',', $bodyParams['id']); $statusMap = array_map(function ($value) { return $value == 0 ? 1 : 0; }, explode(',', $bodyParams['status'])); $dataMap = array_combine($idMap, $statusMap); foreach ($dataMap as $id => $status) { $model = AdminUser::findOne(['id' => $id]); $model->status = $status; $model->save(); } return $this->asSuccess([], '操作成功'); } } ~~~