Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?
  • Leon

      Seviye 31
    • Düzenlendi

    Aşağıda UserControllerim

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

    Bu kadar karmaşadan kurtulmak için aşağıdaki gibi yapmak istersem, nasıl yapabilirim if koşullarımı?

    <?php
    
    namespace App\Http\Requests;
    
    use Illuminate\Contracts\Validation\Validator;
    use Illuminate\Foundation\Http\FormRequest;
    use Illuminate\Http\Exceptions\HttpResponseException;
    
    class UserRegisterRequest extends FormRequest
    {
        public function authorize()
        {
            return true;
        }
        public function rules()
        {
            return [
                'firstlastname' => 'required|regex:/^(?=\S+(?:\s\S+)+$)[\p{Latin}ŞşÇçÖöÜüıİĞğ\s]{6,60}$/',
            ];
        }
    
    }

    Aşağıdaki controller dosyamda bir doğrulamadan kurtulduk peki ya diğerlerini nasıl ortadan kaldırabilirim?

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

    Aklıma gelen yöntem aşağıdaki gibi bir şey fakat ne kadar doğru bir yöntem?

    <?php
    
    namespace App\Http\Requests;
    
    use Illuminate\Contracts\Validation\Validator;
    use Illuminate\Foundation\Http\FormRequest;
    use Illuminate\Http\Exceptions\HttpResponseException;
    
    class UserRegisterRequest extends FormRequest
    {
        public function authorize()
        {
            return true;
        }
        public function rules()
        {
            $dogrula['firstlastname'] = 'required|regex:/^(?=\S+(?:\s\S+)+$)[\p{Latin}ŞşÇçÖöÜüıİĞğ\s]{6,60}$/';
            if($this->country == "USA"){
                $dogrula['city'] = 'required|exists:city,name';
                $dogrula['state'] = 'required|exists:city,name';
            }else{
                $dogrula['city'] = 'required|min:2|max:60|regex:/^[\p{Latin}\dŞşÇçÖöÜüıİĞğ\s]{2,60}$/';
                $dogrula['state'] = 'required|min:2|max:60|regex:/^[\p{Latin}\dŞşÇçÖöÜüıİĞğ\s]{2,60}$/';
            }
            return $dogrula;
        }
    
    }

      Leon Basit ve iş görür bir yöntem, bana göre böyle iyi. Öteki türlü şu basit if için bir çok şey yapmak zorunda kalacaksınız, karmaşıklaştırmaya gerek yok.

      Teşekkür ederim. @mgsmus Hocam, inşallah okumayı söküp yazmaya geçeceğim. Az kaldı diye düşünüyorum.