Как PHP проверка преобразуется в Laravel проверку? - PullRequest
0 голосов
/ 10 июля 2020

Как я могу выполнить процесс проверки в моем php коде ниже с помощью laravel validate?

$request->validate([
'city' => '??????????????'
]);

<?php

function exist_city($post_array = ["country" => "US", "city" => "Angels","state" => "uncle"]){
    
    if($post_array['country'] == "US"){
        $database_query_result = [
            ["city" => "mardiv"],
            ["city" => "Angels"],
            ["city" => "sardan"],
        ];
        if(in_array($post_array['city'],$database_query_result)){
           return "its okay city";
        }else{
           return "its wrong city";
        }
    }else{
        if(strlen($post_array['city']) > 2){
            return "its okay city";
        }else{
            return "its wrong city";
        }
    }
}

Надеюсь, я смогу объяснить. У меня не очень хороший английский sh.

$request->validate([
 'country' => 'required|min:2|max:2|exists:country,country_code', 
 'city' => 'required_if:country,US|exists:city,name',
]);

Например, если в приведенном выше коде указан код страны США, требуется указать город и есть ли имя в базе данных?

проверяет, есть ли имя в базе данных, даже если страна не США?

Думаю, мне следует сделать следующее? Есть другой способ?

if($request->country == "US"){
    $request->validate([
        'city' => 'required_if:country,US|exists:city,name',
        'state' => 'required_if:country,US|exists:city,name',
    ]);
}else{
    $request->validate([
        'city' => 'required|min:2|max:60|regex:/^(?=\S+(?:\s\S+)+$)[\p{Latin}ŞşÇçÖöÜüıİĞğ\s]{2,60}$/',
        'state' => 'required|min:2|max:60|regex:/^(?=\S+(?:\s\S+)+$)[\p{Latin}ŞşÇçÖöÜüıİĞğ\s]{2,60}$/',
    ]);
}

1 Ответ

1 голос
/ 10 июля 2020

Вы можете изменить правила на основе условия, а затем вызвать для него метод проверки следующим образом.

if($request->country == "US"){
    $rules = [
        'city' => 'required_if:country,US|exists:city,name',
        'state' => 'required_if:country,US|exists:city,name',
    ];
}else{
    $rules = [
        'city' => 'required|min:2|max:60|regex:/^(?=\S+(?:\s\S+)+$)[\p{Latin}ŞşÇçÖöÜüıİĞğ\s]{2,60}$/',
        'state' => 'required|min:2|max:60|regex:/^(?=\S+(?:\s\S+)+$)[\p{Latin}ŞşÇçÖöÜüıİĞğ\s]{2,60}$/',
    ];
}

$request->validate($rules);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...