1masoud
5 سال پیش توسط 1masoud مطرح شد
18 پاسخ

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

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


ثبت پرسش جدید
Mohammad Masoudi
تخصص : Developer
@pesaregorg 5 سال پیش آپدیت شد
0

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


1masoud
تخصص : php,laravel
@masoudproton 5 سال پیش آپدیت شد
0

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


Mohammad Masoudi
تخصص : Developer
@pesaregorg 5 سال پیش مطرح شد
0

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

php artisan make:request UserForm

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


1masoud
تخصص : php,laravel
@masoudproton 5 سال پیش مطرح شد
0

@pesaregorg

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


Mohammad Masoudi
تخصص : Developer
@pesaregorg 5 سال پیش آپدیت شد
0

@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
تخصص : php,laravel
@masoudproton 5 سال پیش مطرح شد
0

@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
تخصص : Developer
@pesaregorg 5 سال پیش آپدیت شد
0

@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
تخصص : php,laravel
@masoudproton 5 سال پیش آپدیت شد
0

@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
تخصص : Developer
@pesaregorg 5 سال پیش مطرح شد
0

@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
تخصص : php,laravel
@masoudproton 5 سال پیش مطرح شد
0

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


Mohammad Masoudi
تخصص : Developer
@pesaregorg 5 سال پیش آپدیت شد
0

@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
تخصص : backend developer at Snapp mar...
@khanzadimahdi 5 سال پیش آپدیت شد
0

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

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


1masoud
تخصص : php,laravel
@masoudproton 5 سال پیش مطرح شد
0

@khanzadimahdi

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


mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 5 سال پیش مطرح شد
0

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

@masoudproton


1masoud
تخصص : php,laravel
@masoudproton 5 سال پیش مطرح شد
0

@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
تخصص : backend developer at Snapp mar...
@khanzadimahdi 5 سال پیش مطرح شد
0

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


1masoud
تخصص : php,laravel
@masoudproton 5 سال پیش مطرح شد
mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 5 سال پیش مطرح شد
0

به صورت زیر

$valiDate = $request->only([
    'admin_id', 'form_id',
    'form_width', 'label_alignment',
    'question_spacing', 'label_width',
    'font', 'label_width',
]);

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

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