سوال در مورد آپدیت در لاراول

- 2 هفته پیش
توسط mahdi khanzadi آپدیت شد
1masoud ( 14880 تجربه )
2 هفته پیش
تخصص : php,laravel

@ali.bayat
@Alimotreb
@khanzadimahdi
من یک فرم دارم که نام و نام خانوادگی دارد زمانی که میخوام ادیت کنم نام رو ادیت می کنم و نام خانوادگی رو دست نمیزنم و وقتی سیو میکنم سیو میشه اما نام خانوادگی که قبلا سیو کرده بودم پاک میشه و در دیتابیس nullمیزنه
این کار رو من به صورت api نوشتم باید چیکار کنم که اون مقدار قبلی اگر تغییر نکرد در دیتابیس نگه داره

Mohammad Masoudi ( 1690 تجربه )
2 هفته پیش
تخصص : Developer

@masoudproton
میشه به چند روش انجام داد
1-اگر api هست پس نیازی نیست مواردی که خالی هستند ارسال بشن، مثلا اگر فقط نام پر شده، همون رو ارسال کنید به API
2-زمانی که توی صفحه فرم هستید، یه درخواست بدید به API و اطلاعات کاربر رو بگیرید و توی فیلدهای فرم جاگذاری کنید، که از پیش پر بشن، مثل فرم پروفایل راکت، و زمانی که ارسال رو بزنی، همه فرم پر شده میان، اینجوری اگر فیلدی تغییر کرده باشه آپدیت میشه، و بقیه فیلدها هم با مقدار قدیمی آپدیت میشن، میتونی روی فرم required بزاری، که نتونه فیلدی رو خالی بفرسته
3- میتونید یه request form بسازید، و اونجا چک کنید مقادیری که خالی هستند از ارایه request حذف بشن و بعد آپدیت صورت بگیره
میتونید همه این موارد رو هم باهم انجام بدید
موفق باشید

1masoud ( 14880 تجربه )
2 هفته پیش
تخصص : php,laravel

@pesaregorg
همین گزینه یک رو میخوام چطوری تشخیص بدم کدوم پر شده و فقط اون رو بفرسته میشه با کد بگید .
قسمت backendکار رو من مینویسم قسمت فرانت اندقسمت فرانت اند دست من نیست

Mohammad Masoudi ( 1690 تجربه )
2 هفته پیش
تخصص : Developer

@masoudproton
این بخش در هر دو طرف می‌تونه انجام بشه، یعنی در فرانت قبل ارسال چک کنه، یعنی با جاوااسکریپت چک کنه، هر فیلدی که خالیه به آرایه ای که قراره ارسال بشه اضافه نشه
در بکند هم شما میتونید بجای دریافت مستقیم request به عنوان ورودی متد، یک form request بسازید( نحوه ایجادش در گوگل هست)
نحوه ایجادش:

php artisan make:request UserForm

و مقادیر فرم رو اینجا چک کنید، و هر کدوم خالی بود رو حذف کنید، و بقیه رو در یک آرایه بریزید، و حالا این آرایه جدید رو به عنوان ورودی به متد آپدیت توی کنترلر بدید

1masoud ( 14880 تجربه )
2 هفته پیش
تخصص : php,laravel

@pesaregorg

میشه چک کردنش هم بگید

Mohammad Masoudi ( 1690 تجربه )
2 هفته پیش
تخصص : Developer

@masoudproton
بیخیال اون فرم. کد زیر رو ببین توی متد مورد نظرت استفاده کن

 public function update(Request $request)
    {
        $user = auth()->user();
        $input = array_filter($request->all(), 'strlen');
        return $user->update($input);
    }

این خط واست چک میکنه مقادیر خالی رو از آرایه حذف میکنه

 $input = array_filter($request->all(), 'strlen');
1masoud ( 14880 تجربه )
2 هفته پیش
تخصص : php,laravel

@pesaregorg

این کد منه کجاش باید اضافه کنم

public function style_edit(Request $request,$id)
    {
        $valiDate = $this->validate($request, [
            'admin_id'=>'',
            'form_id' => 'min:0|max:7',
            'form_width' => 'min:0|max:7',
            'label_alignment' => '',
            'question_spacing' => 'min:0|max:7',
            'label_width' => 'min:0|max:7',
            'font' => 'min:0|max:7',
            'label_width' => 'min:0|max:7',
        ]);
        $user= StyleModel::find($id);
        if ($user->admin_id == auth()->user()->id) {
            $user->admin_id=auth()->user()->id;
            $user->form_id = $valiDate['form_id'];
            $user->form_width = $valiDate['form_width'];
            $user->label_alignment = $valiDate['label_alignment'];
            $user->question_spacing = $valiDate['question_spacing'];
            $user->label_width = $valiDate['label_width'];
            $user->font = $valiDate['font'];
            $user->label_width = $valiDate['label_width'];
            if ($user->update()) {
                return response([
                    'data' => [
                        'message' => ' style is register',
                    ],
                    'status' => 'success',
                    'info' => $user
                ]);
            }
        } else {
            return "Id not found";
        }
    }
Mohammad Masoudi ( 1690 تجربه )
2 هفته پیش
تخصص : Developer

@masoudproton

public function style_edit(Request $request,$id)
    {

        $valiDate = $this->validate($request, [
            'admin_id'=>'',
            'form_id' => 'min:0|max:7',
            'form_width' => 'min:0|max:7',
            'label_alignment' => '',
            'question_spacing' => 'min:0|max:7',
            'label_width' => 'min:0|max:7',
            'font' => 'min:0|max:7',
            'label_width' => 'min:0|max:7',
        ]);
 $input = array_filter($valiDate, 'strlen');
        $user= StyleModel::find($id);
        if ($user->admin_id == auth()->user()->id) {
            $user->admin_id=auth()->user()->id;
            $user->form_id = $input ['form_id'];
            $user->form_width = $input ['form_width'];
            $user->label_alignment = $input ['label_alignment'];
            $user->question_spacing = $input ['question_spacing'];
            $user->label_width = $input ['label_width'];
            $user->font = $input ['font'];
            $user->label_width = $input ['label_width'];
            if ($user->update()) {
                return response([
                    'data' => [
                        'message' => ' style is register',
                    ],
                    'status' => 'success',
                    'info' => $user
                ]);
            }
        } else {
            return "Id not found";
        }
    }
1masoud ( 14880 تجربه )
2 هفته پیش
تخصص : php,laravel

@pesaregorg
این ارور رو میده

Argument 1 passed to App\\Http\\Controllers\\Controller::validate() must be an instance of Illuminate\\Http\\Request, array given, called in /home/netwons/PhpstormProjects/untitled/app/Http/Controllers/Api/v1/ColorsController.php on line 259
Mohammad Masoudi ( 1690 تجربه )
2 هفته پیش
تخصص : Developer

@masoudproton
این رو امتحان کن

public function style_edit(Request $request,$id)
    {
    $input = array_filter($request->all(), 'strlen');
        $valiDate = $this->validate($input, [
            'admin_id'=>'',
            'form_id' => 'min:0|max:7',
            'form_width' => 'min:0|max:7',
            'label_alignment' => '',
            'question_spacing' => 'min:0|max:7',
            'label_width' => 'min:0|max:7',
            'font' => 'min:0|max:7',
            'label_width' => 'min:0|max:7',
        ]);
        $user= StyleModel::find($id);
        if ($user->admin_id == auth()->user()->id) {
            $user->admin_id=auth()->user()->id;
            $user->form_id = $valiDate['form_id'];
            $user->form_width = $valiDate['form_width'];
            $user->label_alignment = $valiDate['label_alignment'];
            $user->question_spacing = $valiDate['question_spacing'];
            $user->label_width = $valiDate['label_width'];
            $user->font = $valiDate['font'];
            $user->label_width = $valiDate['label_width'];
            if ($user->update()) {
                return response([
                    'data' => [
                        'message' => ' style is register',
                    ],
                    'status' => 'success',
                    'info' => $user
                ]);
            }
        } else {
            return "Id not found";
        }
    }
1masoud ( 14880 تجربه )
2 هفته پیش
تخصص : php,laravel

@pesaregorg
این مثل قبلی هست که ام باز همین ارور رو میده

Mohammad Masoudi ( 1690 تجربه )
2 هفته پیش
تخصص : Developer

@masoudproton

public function style_edit(Request $request,$id)
    {

        $valiDate = $this->validate($request->all(), [
            'admin_id'=>'',
            'form_id' => 'min:0|max:7',
            'form_width' => 'min:0|max:7',
            'label_alignment' => '',
            'question_spacing' => 'min:0|max:7',
            'label_width' => 'min:0|max:7',
            'font' => 'min:0|max:7',
            'label_width' => 'min:0|max:7',
        ]);
        $input = array_filter($request->all(), 'strlen');
        $user= StyleModel::find($id);
        if ($user->admin_id == auth()->user()->id) {
            $updateUser = $user->update($input);
            if ($updateUser) {
                return response([
                    'data' => [
                        'message' => ' style is register',
                    ],
                    'status' => 'success',
                    'info' => $updateUser 
                ]);
            }
        } else {
            return "Id not found";
        }
    }
mahdi khanzadi ( 49707 تجربه )
2 هفته پیش
تخصص : برنامه نویس سمت سرور

سلام. در چنین حالت هایی متد درخواست های خودتون رو درون روتر به patch تغییر حالت بدید مشکلتون حل میشه. درخواست ها رو هم به صورت patch ارسال کنید.

نیاز به هیچگونه تغییرات درون کدها نیست.

1masoud ( 14880 تجربه )
2 هفته پیش
تخصص : php,laravel

@khanzadimahdi

این ارور رو میده زمانی که patch میکنم میگه این متغییر نیست در صوزتی که هست
Undefined index: form_id",

mahdi khanzadi ( 49707 تجربه )
2 هفته پیش
تخصص : برنامه نویس سمت سرور

کدهای خودتون رو قرار بدید تا بررسی کنیم.

@masoudproton

1masoud ( 14880 تجربه )
2 هفته پیش
تخصص : php,laravel

@khanzadimahdi

public function style_edit(Request $request,$id)
    {
        $valiDate = $this->validate($request, [
            'admin_id'=>'',
            'form_id' => 'min:0|max:7',
            'form_width' => 'min:0|max:7',
            'label_alignment' => '',
            'question_spacing' => 'min:0|max:7',
            'label_width' => 'min:0|max:7',
            'font' => 'min:0|max:7',
            'label_width' => 'min:0|max:7',
        ]);
        $user= StyleModel::find($id);
        if ($user->admin_id == auth()->user()->id) {
            $user->admin_id=auth()->user()->id;
            $user->form_id = $valiDate['form_id'];
            $user->form_width = $valiDate['form_width'];
            $user->label_alignment = $valiDate['label_alignment'];
            $user->question_spacing = $valiDate['question_spacing'];
            $user->label_width = $valiDate['label_width'];
            $user->font = $valiDate['font'];
            $user->label_width = $valiDate['label_width'];
            if ($user->update()) {
                return response([
                    'data' => [
                        'message' => ' style is register',
                    ],
                    'status' => 'success',
                    'info' => $user
                ]);
            }
        } else {
            return "Id not found";
        }
    }
mahdi khanzadi ( 49707 تجربه )
2 هفته پیش
تخصص : برنامه نویس سمت سرور

چرا اطلاعات رو با مدت only از request دریافت نمیکنید؟

1masoud ( 14880 تجربه )
2 هفته پیش
تخصص : php,laravel

@khanzadimahdi
چطوری؟

mahdi khanzadi ( 49707 تجربه )
2 هفته پیش
تخصص : برنامه نویس سمت سرور

به صورت زیر

$valiDate = $request->only([
    'admin_id', 'form_id',
    'form_width', 'label_alignment',
    'question_spacing', 'label_width',
    'font', 'label_width',
]);
برای ارسال پاسخ باید وارد سایت شوید