Rumah  >  Soal Jawab  >  teks badan

Kenal pasti isu dengan pengesahan borang ini

<p>Saya menggunakan Laravel 5.8 dan saya telah membuat kaedah pengawal ini untuk mencipta beberapa rekod dalam pangkalan data. </p> <pre class="brush:php;toolbar:false;">fungsi awam doTheUpload(Minta $request) { cuba{ $request->validate([ 'video' => 'nullable|mimes:mp4', 'video_thumb' => 'diperlukan|mimes:jpg,png,jpeg', 'video_name' => 'diperlukan', 'video_desc' => 'boleh batal', 'available_download' => 'nullable', ],[ 'video.mimes' => 'format fail video tidak sah', 'video_thumb.required' => 'memuat naik imej kecil video diperlukan', 'video_name.required' => 'anda mesti memasukkan nama video', 'video_thumb.mimes' => 'format fail lakaran kenit imej tidak sah', ]); //Lakukan proses muat naik }tangkap(Pengecualian $e){ dd($e); } }</pre> <p>Tetapi ini tidak akan berfungsi dan mengembalikan ralat ini: </p> <h2><strong>Data yang diberikan adalah tidak sah. </strong></h2> <p>Ini pada asasnya kerana permintaan pengesahan borang dan apabila saya mengalih keluar pengesahan ini daripada kaedah ia berfungsi dengan baik. </p> <p>Jadi, apakah yang salah dengan pengesahan permintaan borang yang mengembalikan ralat ini? </p> <p>Jika anda tahu, sila beritahu saya...Saya amat menghargai sebarang pendapat atau cadangan. </p> <p>Terima kasih. </p>
P粉296080076P粉296080076390 hari yang lalu501

membalas semua(2)saya akan balas

  • P粉569205478

    P粉5692054782023-09-01 16:03:08

    Anda mesti menyatakan dengan tepat perkara yang ingin anda sahkan:

    $request->validate([
        'request.video' => 'nullable|mimes:mp4',
        'request.video_thumb' => 'required|mimes:jpg,png,jpeg',
        'request.video_name' => 'required',
        'request.video_desc' => 'nullable',     
        'request.available_download' => 'nullable',
    ], [
        'request.video.mimes' => 'video file format is not valid',
        'request.video_thumb.required' => 'uploading video thumbnail is required',
        'request.video_name.required' => 'you must enter name of video',
        'request.video_thumb.mimes' => 'image thumbnail file format is not valid',
    ]);

    Contoh kod saya:

    $requestData = $request->request_data;
            
            // data
            $company_name = $requestData['company_name'];
            $company_type = $requestData['company_type'];
            $company_address = $requestData['company_address'];
            $latitude = $requestData['latitude'];
            $longitude = $requestData['longitude'];
            $company_branch_count = $requestData['company_branch_count'];
            $yes_radio = strval($requestData['yes_radio']);
            $no_radio = strval($requestData['no_radio']);
            $company_contact_user_first_name = $requestData['company_contact_user_first_name'];
            $company_contact_user_last_name = $requestData['company_contact_user_last_name'];
            $company_contact_user_email = $requestData['company_contact_user_email'];
            $company_contact_user_password = $requestData['company_contact_user_password'];
            $company_contact_user_phone = $requestData['company_contact_user_phone'];
            $company_kvkk_ok = strval($requestData['company_kvkk_ok']);
            $shipping_method_yourself = $yes_radio === 'true' && $yes_radio != $no_radio ? 1 : 0;
    
            if ($company_kvkk_ok == 'false') {
                return json_encode([
                    'operation_status' => 'error',
                    'error_messages' => 'no',
                ]);
            }
    
            // Validate
            $validator = Validator::make($request->all(), [
                "request_data.company_name" => "required|string|min:5",
                "request_data.company_type" => "required|in:0,1,2,3,4,5,6,7,8,9,10,11,12",
                "request_data.company_address" => "required",
                "request_data.latitude" => "required",
                "request_data.longitude" => "required",
                "request_data.company_branch_count" => "required|integer",
                "request_data.yes_radio" => "required",
                "request_data.no_radio" => "required",
                "request_data.company_contact_user_first_name" => "required",
                "request_data.company_contact_user_last_name" => "required",
                "request_data.company_contact_user_email" => [
                    'required',
                    'email',
                    Rule::unique('users', 'email')->where(function ($query) use ($company_contact_user_email) {
                        return $query->where('email', $company_contact_user_email);
                    }),
                    Rule::unique('companies', 'company_contact_user_email')->where(function ($query) use ($company_contact_user_email) {
                        return $query->where('company_contact_user_email', $company_contact_user_email);
                    }),
                ],
                "request_data.company_contact_user_password" => "required|min:6",
                "request_data.company_contact_user_phone" => "required",
                "request_data.company_kvkk_ok" => "required",
            ], [
                'request_data.company_name.required' => __('company name required'),
                'request_data.company_name.string' => __('company name must be string'),
                'request_data.company_name.min' => __('company name must be at least 5 characters'),
                'request_data.company_type.required' => __('company type required'),
                'request_data.company_type.in' => __('company type invalid'),
                'request_data.company_address.required' => __('company address required'),
                'request_data.latitude.required' => __('latitude required'),
                'request_data.longitude.required' => __('longitude required'),
                'request_data.company_branch_count.required' => __('company branch count required'),
                'request_data.company_branch_count.integer' => __('company branch count must be integer'),
                'request_data.yes_radio.required' => __('yes radio required'),
                'request_data.no_radio.required' => __('no radio required'),
                'request_data.company_contact_user_first_name.required' => __('company contact user first name required'),
                'request_data.company_contact_user_last_name.required' => __('company contact user last name required'),
                'request_data.company_contact_user_email.required' => __('company contact user email required'),
                'request_data.company_contact_user_email.email' => __('company contact user email invalid'),
                'request_data.company_contact_user_email.unique' => __('email already taken'),
                'request_data.company_contact_user_password.required' => __('company contact user password required'),
                'request_data.company_contact_user_password.min' => __('company contact user password must be at least 6 characters'),
                'request_data.company_contact_user_phone.required' => __('company contact user phone required'),
                'request_data.company_kvkk_ok.required' => __('company kvkk ok required'),
            ]);
    
            if ($validator->fails()) {
                $messages = $validator->messages();
                return json_encode([
                    'operation_status' => 'not_validated',
                    'request' => $requestData,
                    'messages' => $messages,
                ]);
            }

    balas
    0
  • P粉278379495

    P粉2783794952023-09-01 10:21:07

    Apabila anda menggunakan pengesahan Laravel, anda harus membiarkan Laravel mengendalikan ralat kerana Laravel akan secara automatik membuang pengecualian apabila peraturan gagal. Oleh itu, cadangan pertama adalah untuk tidak menggunakan blok cuba-tangkap dalam rutin pengesahan.

    Seperti yang dinyatakan dalam dokumentasi Laravel:

    Selain itu, saya mengesyorkan anda untuk tidak menggunakan pengesahan dalam pengawal anda kerana mengikut amalan yang baik adalah disyorkan untuk membuat borang yang berasinganPermintaan untuk pengesahan, jadi anda harus mengubah sedikit pengawal anda untuk memasukkan kelas pengesah:

    <?php
    
    namespace App\Http\Controllers;
    
    ...
    use App\Http\Requests\UploadVideoRequest;
    
    ...
    
    public function doTheUpload(UploadVideoRequest $request)
    {
        /*
        * Here where are calling validation as UploadVideoRequest
        */
    
        // logic for valid uploaded video
    }

    Kini anda perlu membuat permintaan borang, mungkin menggunakan php artisan make:request UploadVideoRequest Perintah ini akan mencipta kelas permintaan borang di bawah app/Http/Requestsapp/Http/Requests yang anda perlu isi dengan:

    <?php
    
    namespace App\Http\Requests;
    
    use Illuminate\Foundation\Http\FormRequest;
    
    class UploadVideoRequest extends FormRequest
    {
        /**
         * Determine if the user is authorized to make this request.
         *
         * @return bool
         */
        public function authorize()
        {
            /*
            * here you should check if the user is authorized to upload video 
            * or let in true if anyone can do that
            */
            return true;
        }
    
        /**
         * Get the validation rules that apply to the request.
         *
         * @return array
         */
        public function rules()
        {
            return [
                'video' => 'nullable|mimes:mp4',
                'video_thumb' => 'required|mimes:jpg,png,jpeg',
                'video_name' => 'required',
                'video_desc' => 'nullable',
                'available_download' => 'nullable',
            ];
        }
    
        /**
         * Define messages to return if an error is detected.
         *
         * @return array
         */
    
        public function messages()
        {
            return [
                'video.mimes' => 'video file format is not valid',
                'video_thumb.required' => 'uploading video thumbnail is required',
                'video_name.required' => 'you must enter name of video',
                'video_thumb.mimes' => 'image thumbnail file format is not valid',
            ];
        }
    
    }

    Dengan menggunakan pendekatan ini, Laravel mengesahkan input pengguna dan menguruskan sebarang ralat melalui pengecualian.

    Salam.

    balas
    0
  • Batalbalas