راکت
حل شده

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

7 پاسخ

سلام من از کد زیر توی کلاس ریکوئست برای ولیدیشن دیتا استفاده کردم زمانی که از متد 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
Javad Ezaz
@sjavadez
ثبت پرسش جدید

پاسخ‌ها

7
Javad Ezaz
Javad Ezaz
@sjavadez

تخصص: برنامه نویس php و لاراول

بهترین پاسخ

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

درود

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

Javad Ezaz
Javad Ezaz
@sjavadez

تخصص: برنامه نویس php و لاراول

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

شاید پاسخ شما همین‌جا باشد

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

Javad Ezaz
Javad Ezaz
@sjavadez

تخصص: برنامه نویس php و لاراول

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

Javad Ezaz
Javad Ezaz
@sjavadez

تخصص: برنامه نویس php و لاراول

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

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

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