Javad Ezaz
5 سال پیش توسط Javad Ezaz مطرح شد
7 پاسخ

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

سلام من از کد زیر توی کلاس ریکوئست برای ولیدیشن دیتا استفاده کردم زمانی که از متد 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
تخصص : برنامه نویس php و لاراول
@sjavadez 5 سال پیش مطرح شد
0

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


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

درود

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


Javad Ezaz
تخصص : برنامه نویس php و لاراول
@sjavadez 5 سال پیش مطرح شد
0

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


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

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


Javad Ezaz
تخصص : برنامه نویس php و لاراول
@sjavadez 5 سال پیش مطرح شد
0

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


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

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


Javad Ezaz
تخصص : برنامه نویس php و لاراول
@sjavadez 5 سال پیش مطرح شد
0

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


Javad Ezaz
تخصص : برنامه نویس php و لاراول
@sjavadez 5 سال پیش مطرح شد
0

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


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام