راکت
حل شده

آپدیت اطلاعات کاربر

3 پاسخ

سلام
روزتون بخیر
من چندتا سوال داشتم
کد زیر رو برای آپدیت اطلاعات کاربر نوشتم
اما مشکلی که وجود داره اینه گه
1.من حتما باید هم نام و هم پسوورد رو وارد کنم وگرنه عملیات ادیت انجام نمیشه
یعنی کاربری که میخواد اطلاعاتش رو ادیت کنه حتما باید پسووردش رو هم تغییر بده
2.الان عکس رو فقط اگه بخواد ادیت کنه انجام میشه ولی نمیشه همزمان مثلا نام و عکس رو ادیت کنه(کد رو چطوری بنویسم که کاربر بتونه هر کدام از اطلاعاتش رو خواست راحت ادیت کنه)

Route::post('profile/{user}' , function (Request $request,User $user){
//handle the user upload of avatar

    if (request()->has('avatar')){
        $avataruploaded = request()->file('avatar');
        $avatarname = time() . '.' . $avataruploaded->getClientOriginalExtension();
        $avatarpath = public_path('/images/');
        $avataruploaded->move($avatarpath ,$avatarname );
        $user->update(['avatar' => '/images/' . $avatarname ,]);
    }

    $data = $request->validate([
        'name' => ['string', 'max:255'],
        'password' => [ 'string', 'min:8', 'confirmed'],
    ]);
//        if (! is_null($request->password)){
//            $request->validate([
//                'password' => ['required', 'string', 'min:8', 'confirmed'],
//            ]);
//            $data['password'] = $request->password;
//        }
    if (isset($_POST['is_disable'])) {
        $_POST['is_disable'] = 1;
    } else
        $_POST['is_disable'] = 0;

    if (isset($_POST['is_superuser'])) {
        $_POST['is_superuser'] = 1;
    } else
        $_POST['is_superuser'] = 0;

    if (isset($_POST['is_staff'])) {
        $_POST['is_staff'] = 1;
    } else
        $_POST['is_staff'] = 0;

    $user->update([
        'name'=>$data['name'],
        'password'=>Hash::make(($data['password'])),
        'is_disable' => $_POST['is_disable'],
        'is_superuser' => $_POST['is_superuser'],
        'is_staff' => $_POST['is_staff'],
    ]);
    if ($user->update())
    alert()->success('عملیات با موفقیت انجام شد.' , 'Message')->persistent('Ok');
    return view('profile' , array('user'=>Auth::user()));
});
مشکات
مشکات
@meshkat315
ثبت پرسش جدید

پاسخ‌ها

3
Mohammad reza Golshahi
Mohammad reza Golshahi
@golshahimohammadreza

تخصص: Go - Python

بهترین پاسخ

سلام دوست عزیز
@a.ghaderi1375
شما ولیدیشنتون طوریه که این مقادیری که فرمودید باید حتما ارسال بشه برای اینکه به صورت optional باشه باید nullable هم به ولیدیشنتون اضافه کنید.

  $data = $request->validate([
        'name' => ['nullable','string', 'max:255'],
        'password' => ['nullable ', 'string', 'min:8', 'confirmed'],
    ]);
مشکات
مشکات
@meshkat315

تخصص: کاراموز

@golshahimohammadreza
خیلی ممنونم از راهنمایی و کمکتون🌺☘️
الان یه مشکلی وجود داره بزرگوار
اگر فیلد پسوورد null باشه
یعنی من برای مثال فقط بخوام نام کاربر رو ادیت کنم و فیلد پسوورد رو خالی بذارم مقدار پسوورد nullمیشه
ولی من میخوام مقدار پسوورد در این حالت تغییر نکنه و همون مقدار قبلیش باشه

مشکات
مشکات
@meshkat315

تخصص: کاراموز

Route::post('profile/{user}' , function (Request $request,User $user){
//handle the user upload of avatar

    if (request()->has('avatar')){
        $avataruploaded = request()->file('avatar');
        $avatarname = time() . '.' . $avataruploaded->getClientOriginalExtension();
        $avatarpath = public_path('/images/');
        $avataruploaded->move($avatarpath ,$avatarname );
        $user->update(['avatar' => '/images/' . $avatarname ,]);
    }

    $data = $request->validate([
        'name' => ['nullable','string', 'max:255'],
        'password' => [ 'string', 'min:8', 'confirmed'],
    ]);
        if (! is_null($request->password)){
            $request->validate([
                'password' => ['required', 'string', 'min:8', 'confirmed'],
            ]);
            $data['password'] = $request->password;
        }
    if (isset($_POST['is_disable'])) {
        $_POST['is_disable'] = 1;
    } else
        $_POST['is_disable'] = 0;

    if (isset($_POST['is_superuser'])) {
        $_POST['is_superuser'] = 1;
    } else
        $_POST['is_superuser'] = 0;

    if (isset($_POST['is_staff'])) {
        $_POST['is_staff'] = 1;
    } else
        $_POST['is_staff'] = 0;

    $user->update([
        'name'=>$data['name'],
        'password'=>Hash::make(($data['password'])),
        'is_disable' => $_POST['is_disable'],
        'is_superuser' => $_POST['is_superuser'],
        'is_staff' => $_POST['is_staff'],
    ]);
    if ($user->update())
    alert()->success('عملیات با موفقیت انجام شد.' , 'Message')->persistent('Ok');
    return view('profile' , array('user'=>Auth::user()));
});

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

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

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