Kaynağa Gözat

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

LuluFJ.Ho 2 yıl önce
ebeveyn
işleme
e6a6ac76fe

+ 3
- 3
app/Http/Requests/Api/SeminarSignUp/StoreRequest.php Dosyayı Görüntüle

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

app/Rules/TWLimited.php → app/Rules/RegionLimitedRules.php Dosyayı Görüntüle

5
 use Illuminate\Contracts\Validation\Rule;
5
 use Illuminate\Contracts\Validation\Rule;
6
 use Illuminate\Contracts\Validation\DataAwareRule;
6
 use Illuminate\Contracts\Validation\DataAwareRule;
7
 
7
 
8
-class TWLimited implements Rule, DataAwareRule
8
+class RegionLimitedRules implements Rule, DataAwareRule
9
 {
9
 {
10
     protected $data = [];
10
     protected $data = [];
11
     
11
     
29
     public function passes($attribute, $value)
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
             if (is_null($this->data['registeredSession'])) {
34
             if (is_null($this->data['registeredSession'])) {
34
                 return false;
35
                 return false;
35
             }
36
             }
37
+            
36
             if (is_null($this->data['lunchOptions'])) {
38
             if (is_null($this->data['lunchOptions'])) {
37
                 return false;
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
         return true;
63
         return true;
41
     }
64
     }