آفلاین
user-avatar

ارور ولیدیشن برای ریکوئست PUT

1 سال پیش
توسط Javad Ezaz آپدیت شد
آفلاین
user-avatar
Javad Ezaz ( 40196 تجربه )
1 سال پیش
تخصص : برنامه نویس php و لاراول

سلام من از کد زیر توی کلاس ریکوئست برای ولیدیشن دیتا استفاده کردم زمانی که از متد POST استفاده میکنم مشکلی نداره اما وقتی متد رو به PUT تغییر میدم ولیدیشن کار نمی کنه

کلاس ریکوئست :

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class VenueRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name'          => ['required', 'string', 'max:255'],
            'description'   => ['string', 'max:255'],
            'address'       => ['required', 'string', 'max:255'],
            'city'          => ['required', 'string', 'max:255'],
            'state'         => ['required', 'string', 'max:255'],
            'country'       => ['required', 'string', 'max:255'],
            'latitude'      => ['regex:/^-?([1-8]?[1-9]|[1-9]0)\.{1}\d{1,6}/', 'max:255'],
            'latitude'      => ['regex:/^-?([1-8]?[1-9]|[1-9]0)\.{1}\d{1,6}/', 'max:255'],
            'welcome_title' => ['string', 'max:255'],
            'welcome_body'  => ['string', 'max:255'],
            'welcome_link'  => ['string', 'max:255'],
        ];
    }
}

کنترلر :

public function update(VenueRequest $request, Venue $venue)
    {
        $data = $venue->update($request);

        return AM::result($data)->make();
    }

فایل api.php :

        Route::put('beacons/{beacon}', 'BeaconController@update')->middleware('auth:api');

فیلدهای form-data در postman:

name:لوکیشن 1
description:پلاک 6544654
address: آدرس سیبسیب  یبل بلس ، لبلسی
city:تهران
state:تهران
country:ایران
latitude:35.764327
longitude:51.470390
welcome_title:شرکت 34234
welcome_body:خوش آمدید
welcome_link:http://google.ir

خروجی Postman:

{
    "message": "The given data was invalid.",
    "errors": {
        "name": [
            "The name field is required."
        ],
        "address": [
            "The address field is required."
        ],
        "city": [
            "The city field is required."
        ],
        "state": [
            "The state field is required."
        ],
        "country": [
            "The country field is required."
        ]
    }
}

لاراول بهم ارور بالا رو نشون میده در صورتی که من داخل form-data پستمن همه ی فیلدا رو وارد کردم.

بهترین پاسخ انتخاب شده توسط Javad Ezaz
آفلاین
user-avatar
Javad Ezaz
1 سال پیش

راه حل رو پیدا کردم.
زمانی که از ریکوئست PUT استفاده می کنیم باید توی postman قسمت Body به جای form-data از x-www-form-urlencoded استفاده کنیم.

آفلاین
user-avatar
علی بیات ( 405098 تجربه )
1 سال پیش
تخصص : توسعه دهنده ارشد وب

درود

در فرمتون از method_field استفاده میکنید دیگه؟

آفلاین
user-avatar
Javad Ezaz ( 40196 تجربه )
1 سال پیش
تخصص : برنامه نویس php و لاراول

از postman استفاده میکنم .
نوع متدم رو PUT میزارم دیگه فک نکنم به method_field احتیاج باشه .

آفلاین
user-avatar
علی بیات ( 405098 تجربه )
1 سال پیش
تخصص : توسعه دهنده ارشد وب

درسته.. در متن خطایی که بالا قرار دادید.. آبجکت errors داره به خطاهای validation اشاره میکنه

آفلاین
user-avatar
Javad Ezaz ( 40196 تجربه )
1 سال پیش
تخصص : برنامه نویس php و لاراول

متد رو به POST تغییر میدم به ارور validation نمی خورم

آفلاین
user-avatar
علی بیات ( 405098 تجربه )
1 سال پیش
تخصص : توسعه دهنده ارشد وب

منظورتون از تغییر به POST .. داخل postman هست ؟

آفلاین
user-avatar
Javad Ezaz ( 40196 تجربه )
1 سال پیش
تخصص : برنامه نویس php و لاراول

نه داخل فایل routes/api.phpمنظورمه.
داخل فایل route متد رو post مینویسم داخل postman ریکوئست رو از نوع post میزارم کار میکنه و ولیدیشن درسته
اما اگه متد رو توی هردو به put تبدیل می کنم اینطور نیست

آفلاین
user-avatar
Javad Ezaz ( 40196 تجربه )
1 سال پیش
تخصص : برنامه نویس php و لاراول

راه حل رو پیدا کردم.
زمانی که از ریکوئست PUT استفاده می کنیم باید توی postman قسمت Body به جای form-data از x-www-form-urlencoded استفاده کنیم.

برای ارسال پاسخ باید وارد سایت شوید