智慧教务系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

101 lines
3.3 KiB

<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\validate\document;
use core\base\BaseValidate;
/**
* Word文档模板验证器
* Class DocumentTemplate
* @package app\validate\document
*/
class DocumentTemplate extends BaseValidate
{
protected $rule = [
'template_id' => 'require|integer|gt:0',
'placeholder_config' => 'require|array',
'fill_data' => 'require|array',
'output_filename' => 'chsAlphaNum|max:100'
];
protected $message = [
'template_id.require' => '模板ID不能为空',
'template_id.integer' => '模板ID必须是整数',
'template_id.gt' => '模板ID必须大于0',
'placeholder_config.require' => '占位符配置不能为空',
'placeholder_config.array' => '占位符配置格式错误',
'fill_data.require' => '填充数据不能为空',
'fill_data.array' => '填充数据格式错误',
'output_filename.chsAlphaNum' => '文件名只能包含中文、字母和数字',
'output_filename.max' => '文件名长度不能超过100个字符'
];
protected $scene = [
'savePlaceholderConfig' => ['template_id', 'placeholder_config'],
'generateDocument' => ['template_id', 'fill_data', 'output_filename']
];
/**
* 验证占位符配置
* @param $value
* @param $rule
* @param $data
* @return bool|string
*/
protected function checkPlaceholderConfig($value, $rule, $data)
{
if (!is_array($value)) {
return '占位符配置必须是数组格式';
}
foreach ($value as $placeholder => $config) {
if (!isset($config['name']) || empty($config['name'])) {
return "占位符 {$placeholder} 的显示名称不能为空";
}
if (!isset($config['data_source']) || !in_array($config['data_source'], ['database', 'manual'])) {
return "占位符 {$placeholder} 的数据源类型无效";
}
if ($config['data_source'] === 'database') {
if (empty($config['table_name']) || empty($config['field_name'])) {
return "占位符 {$placeholder} 的数据库配置不完整";
}
}
if (!isset($config['is_required'])) {
return "占位符 {$placeholder} 必须指定是否必填";
}
}
return true;
}
/**
* 验证填充数据
* @param $value
* @param $rule
* @param $data
* @return bool|string
*/
protected function checkFillData($value, $rule, $data)
{
if (!is_array($value)) {
return '填充数据必须是数组格式';
}
// 这里可以添加更多的数据验证逻辑
// 比如验证必填字段、数据格式等
return true;
}
}