การตรวจสอบความถูกต้องของ Laravel ผ่านอินพุตว่าง

ฉันมีแบบฟอร์ม laravel เพื่ออัปเดตข้อมูลผู้ใช้ที่มีอยู่ในฐานข้อมูล แต่ถ้าฟิลด์ในแบบฟอร์มนั้นว่างเปล่า ฉันไม่ต้องการให้อัปเดตบันทึกนั้นในฐานข้อมูล ในปัจจุบัน หากฟิลด์ว่างเปล่าและส่งแบบฟอร์มไปแล้ว ระบบจะส่งข้อมูลอินพุตว่างนั้นและลบบันทึกในฐานข้อมูลออก

ด้านล่างนี้เป็นฟังก์ชันในการแก้ไขข้อมูลของผู้ใช้แล้วดำเนินการอัพเดตฐานข้อมูล ขณะนี้ฉันแนบ Request::old('...') ไปกับอีเมล แต่เนื่องจากการตรวจสอบว่าเป็น 'unique:users' จึงทำให้เกิดข้อผิดพลาด 'email is been'

ขอบคุณ,

public function postEdit(Request $request)
{
    $this->validate($request, [
        'email' => 'unique:users|email|max:255',
        'password' => 'min:6',
        'confirm_password' => 'same:password', 
        'about_me' => 'max:500',
    ]);

    Auth::user()->update([


        'email' => $request->input('email'),
        'password' => bcrypt($request->input('password')),
        'confirm_password' => bcrypt($request->input('confirm_password')),
        'about_me' => $request->input('about_me'),
    ]);

    return redirect()->route('profile.edit')->with('info', 'You have updated your profile!');
}

person Matt Pierce    schedule 29.11.2015    source แหล่งที่มา
comment
หากผู้ใช้ลบข้อมูล นั่นหมายความว่าเขาต้องการให้ฟิลด์ว่างเปล่า เลขที่?   -  person itachi    schedule 29.11.2015
comment
พวกเขาต้องการที่อยู่อีเมลในระบบ ดังนั้น ตัวเลือกคือ (1) ทำให้ฟิลด์จำเป็นต้องมี แต่มีการตรวจสอบความถูกต้องที่ไม่เกิดข้อผิดพลาดหากอีเมลนั้นเหมือนกับบันทึกฐานข้อมูลปัจจุบันสำหรับผู้ใช้นั้น หรือ (2) อนุญาตให้ฟิลด์เว้นว่าง และ หากเป็นเช่นนั้น ให้เก็บบันทึกฐานข้อมูลปัจจุบันไว้และไม่ได้ตั้งค่าเป็น ' '   -  person Matt Pierce    schedule 29.11.2015
comment
ไม่ซ้ำกันยอมรับพารามิเตอร์ที่ 3 ส่งรหัสผู้ใช้ในพารามิเตอร์นั้น และมันจะตรวจสอบอีเมลที่ไม่ซ้ำ แม้ว่าฟิลด์ในผู้ใช้ที่เกี่ยวข้องจะถูกข้ามไป   -  person itachi    schedule 29.11.2015


คำตอบ (2)


คุณต้องแก้ไขกฎ unique เพื่อยกเว้นบันทึกที่คุณกำลังแก้ไข

แทน

'email' => 'unique:users|email|max:255',

คุณควรใช้:

'email' => 'unique:users,email,'. Auth::user()->id.'|email|max:255',

ข้อมูลอ้างอิงสำหรับกฎเฉพาะ

person Marcin Nabiałek    schedule 29.11.2015
comment
ขอบคุณ ฉันกำลังมองหาข้อยกเว้นในกฎการตรวจสอบและไม่เห็นรายการนั้นอยู่ภายใต้รายการที่ไม่ซ้ำกัน - person Matt Pierce; 29.11.2015

ในกฎการตรวจสอบ คุณสามารถตั้งค่า 'จำเป็น' ได้ และสิ่งนี้จะต้องช่วยได้

person Echo    schedule 29.11.2015
comment
ถูกต้อง แต่ปัญหาคือหากจำเป็นต้องกรอกข้อมูลในช่องนั้น และผู้ใช้ต้องการเก็บอีเมลนั้นไว้เหมือนเดิม ระบบจะส่งคืนข้อผิดพลาดเนื่องจากอีเมลถูกใช้ไปแล้ว - person Matt Pierce; 29.11.2015
comment
ฉันเห็น 2 ตัวเลือกในกรณีนี้ 1) ลบกฎเฉพาะออกจากเครื่องมือตรวจสอบความถูกต้อง และตรวจสอบวิธีการด้วยตนเองนี้ 2) ในกรณีนี้ผู้ใช้จะต้องได้รับอนุญาต เขียนกฎอื่น ซึ่งจะรวมกฎที่ไม่ซ้ำกัน และตรวจสอบว่าอีเมลของผู้ใช้ที่ได้รับอนุญาตเหมือนกับอินพุตหรือไม่ - person Echo; 29.11.2015