Skip to content

Commit 439accc

Browse files
committed
定义了表单验证的错误文本
1 parent d1cc1b6 commit 439accc

File tree

4 files changed

+88
-14
lines changed

4 files changed

+88
-14
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ $text = WechatManager::getReply('keyword');
4343
```
4444
即可返回该关键字设置的回复信息,如果该关键字有多个回复则会随机获取一个返回。
4545

46+
3. 获取欢迎语回复
47+
```
48+
$text = WechatManager::getWelcomeReply();
49+
```
50+
4651
使用laravel-wechat的话,可以在微信消息服务端那里这样使用
4752
```
4853

src/Http/Controllers/AdminWechatMenuController.php

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
use Encore\Admin\Form;
77
use Encore\Admin\Layout\Content;
88
use Encore\Admin\Tree\Tools;
9+
use Illuminate\Support\Arr;
910
use Illuminate\Support\Str;
1011
use Phpcxy\WechatManager\Models\AdminWechatMenu;
1112
use Phpcxy\WechatManager\Models\AdminWechatReply;
1213
use Phpcxy\WechatManager\Tools\ApplyMenu;
14+
use Phpcxy\WechatManager\WechatManager;
1315

1416
class AdminWechatMenuController extends AdminController
1517
{
@@ -30,7 +32,7 @@ public function __construct()
3032
$this->types = [
3133
'view' => '链接',
3234
'text' => '文字',
33-
'click' => '事件'
35+
'click' => '事件',
3436
];
3537
}
3638

@@ -43,7 +45,9 @@ public function index(Content $content)
4345
});
4446

4547
$tree->branch(function ($branch) {
46-
return "{$branch['title']} <span class='label label-success'>{$this->types[$branch['type']]}</span>";
48+
$label = WechatManager::keyToLabel($branch['type']);
49+
$text = $branch['type'] ? Arr::get($this->types, $branch['type']) : '一级菜单';
50+
return "{$branch['title']} <span class='label label-{$label}'>{$text}</span>";
4751
});
4852
}));
4953

@@ -55,9 +59,10 @@ public function index(Content $content)
5559
*
5660
* @param int $id
5761
*
62+
* @param Content $content
5863
* @return \Illuminate\Http\RedirectResponse
5964
*/
60-
public function show($id)
65+
public function show($id, Content $content)
6166
{
6267
return redirect()->route('menu.edit', ['id' => $id]);
6368
}
@@ -72,21 +77,27 @@ protected function form()
7277
$form = new Form(new AdminWechatMenu);
7378
$form->text('title', __('名称'))->rules('required');
7479
$form->select('parent_id', '父级菜单')->options(AdminWechatMenu::selectOptions())
75-
->rules('required');
80+
->rules('required', [
81+
'required' => '请选择父级菜单'
82+
]);
7683

7784
$form->select('type', '类型')->options($this->types)->help("如果是一级菜单下还有二级菜单,无需选择")
7885
->rules(function($form) {
7986
if (request()->get('parent_id') > 0) {
8087
return 'required';
8188
}
82-
});
89+
}, [
90+
'required' => '菜单类型必填'
91+
]);
8392

8493
$form->textarea('value', '内容')->help("如果是一级菜单下还有二级菜单,无需填写")
8594
->rules(function($form) {
8695
if (request()->get('type')) {
8796
return 'required';
8897
}
89-
});
98+
}, [
99+
'required' => '内容必填'
100+
]);
90101

91102
// 表单回调
92103
$form->saved(function (Form $form) {

src/Http/Controllers/AdminWechatReplyController.php

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
use Encore\Admin\Controllers\AdminController;
66
use Encore\Admin\Form;
77
use Encore\Admin\Grid;
8+
use Encore\Admin\Layout\Content;
89
use Illuminate\Support\Arr;
910
use Phpcxy\WechatManager\Models\AdminWechatReply;
11+
use Phpcxy\WechatManager\WechatManager;
1012

1113
class AdminWechatReplyController extends AdminController
1214
{
@@ -51,7 +53,7 @@ protected function grid()
5153
$source = $this->source;
5254
$grid->column('source', __('来源'))->display(function($value) use ($source) {
5355
return $source[$value];
54-
})->label('primary');
56+
})->label(WechatManager::arrayToLabelArray($source));
5557

5658
$types = $this->types;
5759
$grid->column('type', __('类型'))->display(function($type) use ($types) {
@@ -67,9 +69,10 @@ protected function grid()
6769
*
6870
* @param int $id
6971
*
72+
* @param Content $content
7073
* @return \Illuminate\Http\RedirectResponse
7174
*/
72-
public function show($id)
75+
public function show($id, Content $content)
7376
{
7477
return redirect()->route('reply.edit', ['id' => $id]);
7578
}
@@ -86,11 +89,19 @@ protected function form()
8689
// 表单内不创建menu来源
8790
$source = $this->source;
8891
Arr::forget($source, 'menu');
89-
$form->select('source', '来源')->options($source)->rules('required');
90-
91-
$form->text('key', '关键字')->rules('required_unless:source,welcome');
92-
$form->textarea('value', '回复的内容')->rules('required');
93-
$form->hidden('type')->default('text')->rules('required');
92+
$form->select('source', '来源')->options($source)->rules('required', [
93+
'required' => '回复来源必须选择'
94+
]);
95+
96+
$form->text('key', '关键字')->rules('required_unless:source,welcome', [
97+
'required_unless' => '关键字必须填写'
98+
]);
99+
$form->textarea('value', '回复的内容')->rules('required', [
100+
'required' => '回复的内容必须填写'
101+
]);
102+
$form->hidden('type')->default('text')->rules('required', [
103+
'required' => '回复的类型必须选择'
104+
]);
94105

95106
return $form;
96107
}

src/WechatManager.php

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
namespace Phpcxy\WechatManager;
44

55
use Encore\Admin\Extension;
6+
use Illuminate\Support\Arr;
7+
use Illuminate\Support\Str;
68
use Phpcxy\WechatManager\Models\AdminWechatReply;
79

810
class WechatManager extends Extension
@@ -24,6 +26,40 @@ public static function import()
2426
parent::createPermission('公众号管理', 'wechat', 'wechat*');
2527
}
2628

29+
/**
30+
* 根据指定字符串的首字母算出label标签样式
31+
* @param $key
32+
* @return mixed
33+
*/
34+
public static function keyToLabel($key)
35+
{
36+
$labels = ['danger', 'warning', 'info', 'primary', 'success', 'default'];
37+
38+
$letter = substr($key, 0, 1);
39+
$ascii = ord($letter);
40+
$index = $ascii % 6;
41+
42+
return $labels[$index];
43+
}
44+
45+
/**
46+
* 数组转换label对应关系
47+
* @param $array
48+
* @return array
49+
*/
50+
public static function arrayToLabelArray($array)
51+
{
52+
$labels = ['danger', 'warning', 'info', 'primary', 'success', 'default'];
53+
$colors = [];
54+
55+
$i = 0;
56+
foreach ($array as $key => $value) {
57+
$colors[$key] = Arr::get($labels, $i, 'default');
58+
$i++;
59+
}
60+
return $colors;
61+
}
62+
2763
/**
2864
* @param $content
2965
* @param string $source
@@ -32,11 +68,22 @@ public static function import()
3268
public static function getReply($content, $source = 'reply')
3369
{
3470
$replyModel= new AdminWechatReply();
35-
$replies = $replyModel->where('source', $source)->where('key', $content)->get();
71+
$replies = $replyModel->where('source', $source)->when($content, function($query, $content) {
72+
return $query->where('key', $content);
73+
})->get();
3674

3775
if ($replies->count() > 0) {
3876
return $replies->random()->value;
3977
}
4078
}
4179

80+
/**
81+
* 返回关注欢迎语回复
82+
* @return mixed
83+
*/
84+
public static function getWelcomeReply()
85+
{
86+
return self::getReply(null, 'welcome');
87+
}
88+
4289
}

0 commit comments

Comments
 (0)