Skip to content

Commit 508191f

Browse files
committed
feat: 用户前台表单提交新增字段校验方法validateInputValue
1 parent bfadde7 commit 508191f

File tree

29 files changed

+275
-16
lines changed

29 files changed

+275
-16
lines changed

module/Cms/Api/Controller/FormController.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ public function submit()
5555
return Response::generateError($customField['title'] . '不能为空');
5656
}
5757
}
58+
$ret = $f->validateInputValue($customField, $submitData[$customField['name']], $submitData);
59+
if (Response::isError($ret)) {
60+
return Response::generateError($ret['message']);
61+
}
5862
$submitData[$customField['name']] = $f->serializeValue($submitData[$customField['name']], $submitData);
5963
}
6064
}

module/Cms/Field/AbstractCmsField.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66

77
use ModStart\Core\Input\InputPackage;
8+
use ModStart\Core\Input\Response;
89
use ModStart\Field\AutoRenderedFieldValue;
910
use ModStart\Form\Form;
1011
use ModStart\Support\Concern\HasFields;
@@ -15,16 +16,39 @@ abstract public function name();
1516

1617
abstract public function title();
1718

19+
/**
20+
* 后台字段保存数据准备
21+
* @param $data
22+
* @return mixed
23+
*/
1824
public function prepareDataOrFail($data)
1925
{
2026
return $data;
2127
}
2228

29+
/**
30+
* 用户输入字段获取
31+
* @param $field
32+
* @param InputPackage $input
33+
* @return array|mixed|string|string[]
34+
*/
2335
public function prepareInputOrFail($field, InputPackage $input)
2436
{
2537
return $input->getTrimString($field['name']);
2638
}
2739

40+
/**
41+
* 用户输入字段检查
42+
* @param $field
43+
* @param $value
44+
* @param $data
45+
* @return array
46+
*/
47+
public function validateInputValue($field, $value, $data)
48+
{
49+
return Response::generateSuccess();
50+
}
51+
2852
public function serializeValue($value, $data)
2953
{
3054
return $value;

module/Cms/Field/TextCmsField.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
use Illuminate\Support\Facades\View;
88
use ModStart\Core\Exception\BizException;
9+
use ModStart\Core\Input\Response;
10+
use ModStart\Core\Util\StrUtil;
911
use ModStart\Field\AutoRenderedFieldValue;
1012
use ModStart\Form\Form;
1113

@@ -27,6 +29,15 @@ public function prepareDataOrFail($data)
2729
return $data;
2830
}
2931

32+
public function validateInputValue($field, $value, $data)
33+
{
34+
if (!empty($field['maxLength']) && StrUtil::mbLengthGt($value, $field['maxLength'])) {
35+
return Response::generateError("$field[title] 长度不能超过 $field[maxLength]");
36+
}
37+
return Response::generateSuccess();
38+
}
39+
40+
3041
public function renderForGrid($viewData)
3142
{
3243
return AutoRenderedFieldValue::makeView('modstart::core.field.text-grid', $viewData);

module/Member/Api/routes.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
$router->match(['post'], 'login_phone_captcha', 'AuthController@loginPhoneCaptcha');
1515
$router->match(['post'], 'register', 'AuthController@register');
1616
$router->match(['post'], 'register_email_verify', 'AuthController@registerEmailVerify');
17+
$router->match(['post'], 'register_phone', 'AuthController@registerPhone');
1718
$router->match(['post'], 'register_phone_verify', 'AuthController@registerPhoneVerify');
1819
$router->match(['post'], 'register_captcha', 'AuthController@registerCaptcha');
1920
$router->match(['post'], 'register_captcha_verify', 'AuthController@registerCaptchaVerify');

module/Member/Core/ModuleServiceProvider.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use ModStart\Admin\Widget\DashboardItemA;
99
use ModStart\Core\Dao\ModelUtil;
1010
use ModStart\Core\Util\ColorUtil;
11+
use ModStart\Data\Event\DataDeletedEvent;
1112
use ModStart\Data\Event\DataUploadedEvent;
1213
use ModStart\Data\Event\DataUploadingEvent;
1314
use ModStart\Layout\Row;
@@ -16,6 +17,7 @@
1617
use Module\Member\Config\MemberHomeIcon;
1718
use Module\Member\Config\MemberMenu;
1819
use Module\Member\Model\MemberDataStatistic;
20+
use Module\Member\Model\MemberUpload;
1921
use Module\Member\Provider\MemberAdminShowPanel\MemberAdminShowPanelProvider;
2022
use Module\Member\Provider\MemberDeleteScheduleProvider;
2123
use Module\Member\Provider\VerifySmsTemplateProvider;
@@ -183,6 +185,16 @@ public function boot(Dispatcher $events)
183185
}
184186
}
185187

188+
if (class_exists(DataDeletedEvent::class)) {
189+
DataDeletedEvent::listen(function (DataDeletedEvent $e) {
190+
$record = MemberUpload::where(['dataId' => $e->data['id']])->first();
191+
if ($record) {
192+
$record->delete();
193+
MemberDataStatistic::updateMemberUserUsedSize($record->userId);
194+
}
195+
});
196+
}
197+
186198
AdminMenu::register(function () {
187199
$moneyEnable = ModuleManager::getModuleConfig('Member', 'moneyEnable', false);
188200
$creditEnable = ModuleManager::getModuleConfig('Member', 'creditEnable', false);

module/Member/Docs/release.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
- 修复:在线充值支付中心未安装页面提示
66
- 新增:使用LockUtil替代DBLockUtil
77
- 修复:用户授权登录绑定其他账号异常修复
8+
- 修复:register_phone接口不存在问题修复
9+
- 修复:用户消息单独点击已读操作不生效问题修复
810

911
---
1012

module/Member/Migrate/2016_11_11_000000_create_member_upload.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public function up()
2424
$table->integer('uploadCategoryId')->nullable()->comment('分类ID');
2525

2626
$table->index(['userId', 'uploadCategoryId']);
27+
$table->index(['dataId']);
2728

2829
});
2930
}

module/Member/Web/Controller/memberMessage.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@ MS.ready(
2929
});
3030
});
3131
grid.$lister.on('click', '[data-item-read]', function () {
32-
$(this).closest('[data-message-id]').find('[data-message-unread],[data-item-read]').remove();
33-
setAdRead($(this).closest('[data-message-id]').data('message-id'));
32+
var $message = $(this).closest('[data-message-id]');
33+
setAdRead($message.data('message-id'));
34+
$message.find('[data-message-unread],[data-item-read]').remove();
3435
});
3536
grid.$lister.on('click', '[data-message-id]', function () {
3637
if ($(this).find('[data-message-unread]').length) {
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
3+
4+
namespace Module\Vendor\QuickRun\Verify\Field;
5+
6+
7+
use ModStart\Core\Util\IdUtil;
8+
use ModStart\Layout\LayoutHtml;
9+
10+
/**
11+
* 用户图片字段
12+
*
13+
* Class MemberImage
14+
* @package Module\Member\Widget\Field
15+
*/
16+
class LayoutHtmlVerifyFoot extends LayoutHtml
17+
{
18+
protected $isLayoutField = true;
19+
20+
public function __construct()
21+
{
22+
parent::__construct(null);
23+
}
24+
25+
public function render()
26+
{
27+
$id = IdUtil::generate('LayoutHtmlVerifyFoot');
28+
$this->label = <<<HTML_FOOT
29+
<script type="text/html" id="{$id}Content">
30+
<button type="button" class="btn btn-primary" data-verify-pass>审核通过</button>
31+
<button type="button" class="btn btn-danger" data-verify-reject>审核拒绝</button>
32+
<input class="form" placeholder="输入拒绝理由" data-verify-rejct-remark />
33+
</script>
34+
<script>
35+
$(function(){
36+
$(".panel-dialog-foot").css('text-align','left').html($('#{$id}Content').html());
37+
var search = null;
38+
try {
39+
search = window.parent.__grids.get(0).lister.getParam().search;
40+
} catch(e) { }
41+
var request = function(data){
42+
MS.dialog.loadingOn();
43+
var formData = $('form').serializeJson();
44+
MS.api.post(window.location.href,Object.assign(data,{search:search},formData), function(res){
45+
MS.dialog.loadingOff();
46+
MS.api.defaultCallback(res);
47+
});
48+
};
49+
$(document).on('click','[data-verify-pass]',function(){
50+
request({verify:true});
51+
});
52+
$(document).on('click','[data-verify-reject]',function(){
53+
request({verify:false,remark:$('[data-verify-rejct-remark]').val()});
54+
});
55+
});
56+
</script>
57+
HTML_FOOT;
58+
return parent::render();
59+
}
60+
61+
62+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
4+
namespace Module\Vendor\QuickRun\Verify;
5+
6+
use ModStart\Support\Manager\FieldManager;
7+
use Module\Vendor\QuickRun\Verify\Field\LayoutHtmlVerifyFoot;
8+
9+
class VerifyFieldUtil
10+
{
11+
public static function register()
12+
{
13+
FieldManager::extend('layoutHtmlVerifyFoot', LayoutHtmlVerifyFoot::class);
14+
}
15+
16+
}

0 commit comments

Comments
 (0)