回答編集履歴

1

コメントを受けて、ループでextendするように追記

2019/11/17 03:11

投稿

aaharu
aaharu

スコア441

test CHANGED
@@ -41,3 +41,111 @@
41
41
  }
42
42
 
43
43
  ```
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+ ※追記
52
+
53
+
54
+
55
+ forループで登録したいようなので、このようにしたら動くかもしれません。
56
+
57
+
58
+
59
+ ```js
60
+
61
+ // plugins/vee-validate.js
62
+
63
+ import Vue from 'vue'
64
+
65
+ import { extend, localize, ValidationObserver, ValidationProvider } from 'vee-validate' // 使用する機能
66
+
67
+ import ja from 'vee-validate/dist/locale/ja.json' // エラーメッセージの日本語化用
68
+
69
+ import * as rules from 'vee-validate/dist/rules' // 全てのバリデーションルール
70
+
71
+ import * as myRules from '@/rules' // 全てのカスタムバリデーションルール
72
+
73
+
74
+
75
+ // forループで全てのバリデーションルールをextendで登録する
76
+
77
+ for (const key in rules) {
78
+
79
+ // eslint-disable-next-line import/namespace
80
+
81
+ extend(key, rules[key])
82
+
83
+ }
84
+
85
+
86
+
87
+ Vue.component('ValidationProvider', ValidationProvider)
88
+
89
+ Vue.component('ValidationObserver', ValidationObserver)
90
+
91
+ localize('ja', ja)
92
+
93
+
94
+
95
+ export default ctx => {
96
+
97
+ for (const key in myRules) {
98
+
99
+ // eslint-disable-next-line import/namespace
100
+
101
+ extend(key, myRules[key](ctx))
102
+
103
+ }
104
+
105
+ }
106
+
107
+ ```
108
+
109
+
110
+
111
+ ```js
112
+
113
+ // rules.js
114
+
115
+ const exists = ({ $axios }) => ({
116
+
117
+ params: ['table', 'column'],
118
+
119
+ message: '指定された{_field_}は存在しません。',
120
+
121
+ async validate (value, { table, column }) {
122
+
123
+ // todo::paramsの精査。500を返したい。
124
+
125
+ const params = {
126
+
127
+ value,
128
+
129
+ table,
130
+
131
+ column
132
+
133
+ }
134
+
135
+ const response = await $axios.get('/rules/exists', params)
136
+
137
+ return response.data
138
+
139
+ }
140
+
141
+ })
142
+
143
+
144
+
145
+ export { exists }
146
+
147
+ // 増えていく場合はこう
148
+
149
+ // export { exists, hoge, fuga }
150
+
151
+ ```