Laravel:在实时测试时验证不起作用

时间:2018-04-25 09:37:33

标签: laravel laravel-5.5 laravel-validation

使用API​​集成中的验证创建用户验证功能当我尝试验证用户进行一些验证并在postman中检查它时,它在本地计算机上工作正常但是当我在服务器上上传代码并进行测试时,它是不工作。

控制器功能:

public function confirmUser(ForgotPasswordRequest $request)
{
    // ForgotPasswordRequest  for validate
    $user  = User::leftjoin('user_details','users.id', '=', 'user_details.user_id')
                ->where('user_details.phone', '=', $request->post('phone'))
                ->where('users.email', '=', $request->post('email'))
                ->first();
    if(!$user) {
        return response()->json([
                'message' => "The credentials you provided cannot be determined to be authentic.!!",
                'status_code' => 404,
        ]);
    }
    $token = JWTAuth::fromUser($user);
    return response()->json([
        'message'       => "Your account is eligible for change password.!!",
        'token'         => $token,
        'status_code'   => 200
    ]);
}

我的forgotPasswordRequest.php代码:

<?php

namespace App\Api\V1\Requests;

use Config;
use Dingo\Api\Http\FormRequest;

class ForgotPasswordRequest extends FormRequest
{
    public function rules()
    {
        return Config::get('boilerplate.forgot_password.validation_rules');
    }

    public function authorize()
    {
        return true;
    }
}

config文件夹boilerplate.php文件中包含forgot_password规则:

  'forgot_password' => [

        'validation_rules' => [
        'email' => 'required|email',
        'phone' => 'required|min:11|numeric'
    ]
],

emailphone为空时,它仅返回email验证而不是phone

{
"error": {
    "message": "422 Unprocessable Entity",
    "errors": {
        "email": [
            "The email field is required."
        ]
    },
    "status_code": 422
}
} 

我做错了什么?它与cookies有关吗?

1 个答案:

答案 0 :(得分:0)

这里没有任何问题。

Laravel会检查email字段是否已正确填写。不是,Laravel打破了验证方法并返回异常。

如果您填写email字段,但将phone字段留空,则验证回复将与phone字段相关。