我想把$validator->errors()->add("password","密碼驗證錯誤");
改成Validator::make()出來的驗證訊息一樣,判斷exists
請問該怎麼手動引用語系已設定好的驗證訊息?
public function loginProcess(){ 
    $input = request()->all();
    $validator = Validator::make($input,[
        'email' => [
            'required',
            'email',
        ],
        'password' => [
            'required',
        ],
    ]);
    if ($validator->fails()) {
        return redirect()->back()->withErrors($validator)->withInput();
    }
    $user = User::where('email', $input['email'])->first();
    if(!isset($user)){
        $validator->errors()->add("email","電子信箱驗證錯誤");
        return redirect()->back()->withErrors($validator)->withInput();
    }
    if(!Hash::check($input['password'],$user->password)){
        $validator->errors()->add("password","密碼驗證錯誤");
        return redirect()->back()->withErrors($validator)->withInput();
    }
    return redirect()->route("home");
}
如果語系檔案已經設定好!
密碼驗證錯誤 取代成  __('auth.failed') 沒意外應該就可以了!
我把驗證錯誤的訊息改成$validator->errors()->add("email",__("validation.exists"));
出來的結果是 所選擇的:attribute不存在
關於:attribute怎麼改我有查過,但是都顯示不出來
所以希望可以手動去呼叫Validator的錯誤訊息出來
我個人覺得實務上,不需要讓使用者看到 EMAIL不存在資料庫這件事,回傳 使用者名稱或密碼錯誤 的訊息就可以了!
前面的驗證是驗證使用者輸入的資料正不正確。後面是登入的結果!
如果真的要使用 validation.exists 的提醒字樣
__("validation.exists",[
  'attribute'=>'電子郵件'
])
就可以顯示了!
public function loginProcess(){ 
    //請求資料
    $input = request()->all();
    
    //驗證使用者資料正不正確開始
    $validator = Validator::make($input,[
        'email' => [
            'required',
            'email',
        ],
        'password' => [
            'required',
        ],
    ]);
    
    //驗證失敗時 (情況:email沒有填寫或是非E-MAIL格式、password未填寫時)
    if ($validator->fails()) {
        return redirect()->back()->withErrors($validator)->withInput();
    }
    
    //以下是確認使用者密碼正不正確
    //找使用者
    $user = User::where('email', $input['email'])->first();
    // 沒找到
    if(!isset($user)){
        $validator->errors()->add("email","電子信箱驗證錯誤");
        return redirect()->back()->withErrors($validator)->withInput();
    }
    
    //加密並比對密碼
    if(!Hash::check($input['password'],$user->password)){
        $validator->errors()->add("password","密碼驗證錯誤");
        return redirect()->back()->withErrors($validator)->withInput();
    }
    //成功返回 home
    return redirect()->route("home");
}
謝謝大大的指點!
我利用大大教我的方法在自己試了一下終於做出我想要的結果了!!!
if(!isset($user)){
        $validator->errors()->add("email",__("validation.exists",[
            'attribute'=>__("validation.attributes.email")
        ]));
        return redirect()->back()->withErrors($validator)->withInput();
    }

你的問題應該是多語系的問題吧,
這有點複雜,
可以上網查看看多語系要如何處理.