Yii搭建政务后台表单系统核心是通过ActiveRecord、FormModel、RBAC和事件机制实现可维护、权限控制、多级审批与数据留痕;采用配置驱动动态表单、Behavior封装审批流程、敏感操作二次确认与审计留痕,并对接CA签章、统一认证及办件编号等政务平台能力。

用 Yii 搭建政务后台表单业务,核心是快速生成可维护、带权限控制、支持多级审批和数据留痕的表单系统。不靠插件堆砌,而是借力 Yii 的 ActiveRecord、FormModel、RBAC 和事件机制,把政务场景中常见的动态字段、流程跳转、电子签章前置、操作日志等需求自然嵌入开发流。
用 ActiveForm + Model 实现动态表单结构
政务表单常需按部门/事项类型切换字段(如“企业开办”含营业执照字段,“施工许可”含图纸上传字段)。Yii 不建议硬编码所有字段,而是用配置驱动:
- 在数据库建
form_templates表,存 JSON 字段定义字段名、类型(text/select/upload)、是否必填、校验规则、显示顺序 - 创建
DynamicForm模型,loadFromTemplate($templateId)方法解析 JSON,动态设置rules()和attributeLabels() - 视图中用
ActiveForm::field()遍历模型属性,对file类型自动加['accept' => 'image/*,.pdf'],对select类型调用对应数据字典服务
审批流程与状态机用 Behavior 解耦
政务流程强调状态不可逆、节点可追溯。避免在 Controller 写满 if-else 切换状态,改用行为(Behavior)封装:
- 新建
ApprovalWorkflowBehavior,监听beforeSave事件,根据当前状态和用户角色判断是否允许提交(如:窗口受理员只能“提交至初审”,不能“退回补正”) - 在表单模型中
attachBehavior('workflow', ApprovalWorkflowBehavior::class) - 审批动作统一走
$model->approve($nextStatus, $comment, $approverId),内部记录approval_logs表,含操作人、时间、IP、前后状态
敏感操作强制二次确认与留痕
政务系统中“作废申请”“批量驳回”“修改历史数据”等操作必须防误触、可审计:
- 前端用
yii\bootstrap4\Modal弹出确认框,附带本次操作影响范围提示(如:“将作废该事项下全部附件及审批记录,不可恢复”) - 后端 Action 中调用
Yii::$app->user->identity->hasPermission('admin:hard-delete')校验高危权限 - 执行前写入
operation_audits表,含请求参数快照(Json::encode(Yii::$app->request->post())),便于事后溯源
对接政务平台基础能力(CA 签章、统一身份认证)
上线前需接入省级政务服务平台的通用能力:
- 登录:替换默认
UserIdentity,调用平台 OAuth2 接口获取union_id和岗位信息,存入本地users表并绑定角色 - 签章:表单提交成功后,异步调用 CA 服务接口(传 PDF 原文 Base64 + 用户证书指纹),返回带数字签名的 PDF 地址,存入
signed_documents表 - 办件编号:用
Yii::$app->get('idGenerator')->generate('slip', $deptCode),生成如 “SZ-GX-2024-000123”,规则由组件统一管理,避免各处硬编码
政务表单不是 CRUD 堆叠,而是规则、流程、责任的代码化表达。Yii 的清晰分层让每块逻辑可测、可配、可审,真正支撑起“一网通办”背后的确定性。


















