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
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;
|
|
}
|
|
}
|