回答編集履歴
4
調整
test
CHANGED
@@ -138,7 +138,7 @@
|
|
138
138
|
|
139
139
|
case "max":
|
140
140
|
|
141
|
-
if($this->max_check($value
|
141
|
+
if($this->max_check($value,$rule_setting){
|
142
142
|
|
143
143
|
$result[$control_name][] = $info["name"].'は'.$rule_setting.'文字以内で入力してください。';
|
144
144
|
|
@@ -202,6 +202,12 @@
|
|
202
202
|
|
203
203
|
|
204
204
|
|
205
|
+
エラーメッセージなども設定で持ってそこから取得するようにすればswitchすらも不要にできる可能性があります(そこは発想とやり方次第ですね)
|
206
|
+
|
207
|
+
いずれにしてもバリデーションルールが増えればメソッドも増えます。
|
208
|
+
|
209
|
+
|
210
|
+
|
205
211
|
追記:
|
206
212
|
|
207
213
|
[filter_var()](http://php.net/manual/ja/function.filter-var.php)という関数があるのでこちらを使うとメールアドレスのチェックなどはかなり楽です(自身のチェックしたい内容全て網羅しているとは限りませんが・・・)
|
3
追記
test
CHANGED
@@ -199,3 +199,9 @@
|
|
199
199
|
|
200
200
|
|
201
201
|
パスワードとかは入力必須ではないということはないと思いますので、そういう場合は「パスワードチェック」に空かどうかも含ませるというのもありです。
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
追記:
|
206
|
+
|
207
|
+
[filter_var()](http://php.net/manual/ja/function.filter-var.php)という関数があるのでこちらを使うとメールアドレスのチェックなどはかなり楽です(自身のチェックしたい内容全て網羅しているとは限りませんが・・・)
|
2
修正
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
|
19
|
-
※ざっと作ったので動作検証ほとんどできませんが・・・。
|
19
|
+
※ざっと作ったので動作検証ほとんどできてませんが・・・。
|
20
20
|
|
21
21
|
|
22
22
|
|
@@ -24,6 +24,8 @@
|
|
24
24
|
|
25
25
|
```php
|
26
26
|
|
27
|
+
require_once('./validation.php');
|
28
|
+
|
27
29
|
|
28
30
|
|
29
31
|
//対象コントロール→バリデーションルール
|
@@ -84,35 +86,47 @@
|
|
84
86
|
|
85
87
|
|
86
88
|
|
87
|
-
バリデーション
|
89
|
+
バリデーション(validation.php)
|
88
90
|
|
89
91
|
```php
|
90
92
|
|
93
|
+
|
94
|
+
|
95
|
+
//バリデーションクラス
|
96
|
+
|
91
97
|
class Validation{
|
92
98
|
|
99
|
+
//コンストラクタ
|
100
|
+
|
93
101
|
function Validation($input_control = [],$input_data = []){
|
94
102
|
|
95
|
-
$result = [];
|
103
|
+
$result = [];//チェック結果配列
|
96
104
|
|
97
105
|
foreach($input_control as $control_name=>$info){
|
98
106
|
|
107
|
+
//入力情報が存在するか
|
108
|
+
|
99
109
|
if(array_key_exists($control_name,$input_data)){
|
100
110
|
|
111
|
+
$value = $input_data[$control_name];
|
112
|
+
|
101
|
-
$rules = explode("|",$info["rule"]);
|
113
|
+
$rules = explode("|",$info["rule"]);//バリデーションルールの引き出し
|
102
|
-
|
114
|
+
|
103
|
-
foreach($rules as $r){
|
115
|
+
foreach($rules as $r){ //指定されたルールをループ
|
104
|
-
|
116
|
+
|
105
|
-
$rule = explode("-",$r);
|
117
|
+
$rule = explode("-",$r); //ルール設定の切り出し
|
106
|
-
|
118
|
+
|
107
|
-
$rule_name = $rule[0];
|
119
|
+
$rule_name = $rule[0]; //ルール名
|
108
|
-
|
120
|
+
|
109
|
-
$rule_setting = $rule[1];
|
121
|
+
$rule_setting = $rule[1]; //ルール設定
|
110
122
|
|
111
123
|
switch($rule_name){
|
112
124
|
|
125
|
+
//入力空の場合
|
126
|
+
|
113
127
|
case "empty":
|
114
128
|
|
115
|
-
if($this->empty_check($
|
129
|
+
if($this->empty_check($value)){
|
116
130
|
|
117
131
|
$result[$control_name][] = $info["name"].'を入力してください。';
|
118
132
|
|
@@ -120,9 +134,11 @@
|
|
120
134
|
|
121
135
|
break;
|
122
136
|
|
137
|
+
//最大文字数のチェック
|
138
|
+
|
123
139
|
case "max":
|
124
140
|
|
125
|
-
if($this->max_check($
|
141
|
+
if($this->max_check($value),$rule_setting){
|
126
142
|
|
127
143
|
$result[$control_name][] = $info["name"].'は'.$rule_setting.'文字以内で入力してください。';
|
128
144
|
|
1
追記
test
CHANGED
@@ -8,9 +8,11 @@
|
|
8
8
|
|
9
9
|
それぞれのコントロールに対してバリデーションルールをつけてそのルールに基づいてチェックしてはどうでしょうか。
|
10
10
|
|
11
|
+
あとはルールを追加していけばいいだけなので、入力項目個別に作るよりは様々な用途に使えて、メソッド追加も最小限に済むと思います。
|
11
12
|
|
12
13
|
|
14
|
+
|
13
|
-
私ならクラス化します。
|
15
|
+
というわけで、私ならクラス化します。
|
14
16
|
|
15
17
|
|
16
18
|
|
@@ -112,7 +114,7 @@
|
|
112
114
|
|
113
115
|
if($this->empty_check($input_data[$control_name])){
|
114
116
|
|
115
|
-
$result[$control_name][] = $info["name"].
|
117
|
+
$result[$control_name][] = $info["name"].'を入力してください。';
|
116
118
|
|
117
119
|
}
|
118
120
|
|
@@ -122,7 +124,7 @@
|
|
122
124
|
|
123
125
|
if($this->max_check($input_data[$control_name]),$rule_setting){
|
124
126
|
|
125
|
-
$result[$control_name][] = $info["name"].
|
127
|
+
$result[$control_name][] = $info["name"].'は'.$rule_setting.'文字以内で入力してください。';
|
126
128
|
|
127
129
|
}
|
128
130
|
|
@@ -141,6 +143,10 @@
|
|
141
143
|
}
|
142
144
|
|
143
145
|
}
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
return $result;
|
144
150
|
|
145
151
|
}
|
146
152
|
|