Преглед изворни кода

20220914 按國家地域不同調整對應手機號碼正則判斷

LuluFJ.Ho пре 2 година
родитељ
комит
e6a6ac76fe

+ 3
- 3
app/Http/Requests/Api/SeminarSignUp/StoreRequest.php Прегледај датотеку

@@ -2,20 +2,20 @@
2 2
 
3 3
 namespace App\Http\Requests\Api\SeminarSignUp;
4 4
 use Illuminate\Foundation\Http\FormRequest;
5
-use App\Rules\TWLimited;
5
+use App\Rules\RegionLimitedRules;
6 6
 
7 7
 class StoreRequest extends FormRequest
8 8
 {
9 9
     public function rules(): array
10 10
     {
11 11
         return [
12
-            'trackNo'   => ['required',new TWLimited()],
12
+            'trackNo'   => ['required',new RegionLimitedRules()],
13 13
             'firstName'     => 'required',
14 14
             'lastName'      => 'required',
15 15
             'companyName'   => 'required',
16 16
             'companyEmail'  => 'required|email',
17 17
             'backupEmail'   => 'sometimes|nullable|email',
18
-            'phoneNumber'    => 'required|regex:/((?=(09))[0-9]{10})$/',
18
+            'phoneNumber'    => 'required',
19 19
             'country'   => 'required',
20 20
             // 'registeredSession'   => 'required',    // 如果選擇台灣track則必填
21 21
             // 'lunchOptions'   => 'required',         // 如果選擇台灣track則必填

app/Rules/TWLimited.php → app/Rules/RegionLimitedRules.php Прегледај датотеку

@@ -5,7 +5,7 @@ namespace App\Rules;
5 5
 use Illuminate\Contracts\Validation\Rule;
6 6
 use Illuminate\Contracts\Validation\DataAwareRule;
7 7
 
8
-class TWLimited implements Rule, DataAwareRule
8
+class RegionLimitedRules implements Rule, DataAwareRule
9 9
 {
10 10
     protected $data = [];
11 11
     
@@ -29,13 +29,36 @@ class TWLimited implements Rule, DataAwareRule
29 29
     public function passes($attribute, $value)
30 30
     {
31 31
         //
32
-        if (substr($value, 0, 2)=='TW') {
32
+        if (substr($value, 0, 2)=='TP'||substr($value, 0, 2)=='HS') {
33
+            
33 34
             if (is_null($this->data['registeredSession'])) {
34 35
                 return false;
35 36
             }
37
+            
36 38
             if (is_null($this->data['lunchOptions'])) {
37 39
                 return false;
38 40
             }
41
+
42
+            $pattern = '/09\d{2}-\d{3}-\d{3}/';
43
+            $string = $this->data['phoneNumber'];
44
+            if (!preg_match($pattern, $string, $matches)) {
45
+                return false;
46
+            }
47
+            
48
+        } elseif (substr($value, 0, 2)=='JP') {
49
+
50
+            $pattern = '/^0?[789](?:\d{8}|\d{9})$/';
51
+            $string = $this->data['phoneNumber'];
52
+            if (!preg_match( $pattern, $string, $matches)) {
53
+                return false;
54
+            }
55
+        } elseif (substr($value, 0, 2)=='KR') {
56
+
57
+            $pattern = '/^01{1}(?:\d{8,9})$/';
58
+            $string = $this->data['phoneNumber'];
59
+            if (!preg_match( $pattern, $string, $matches)) {
60
+                return false;
61
+            }
39 62
         }
40 63
         return true;
41 64
     }