[英]How to create custom validation rule for dependent input fields in laravel
[英]How to create custom validation rule in Laravel 6 API
我需要使用我的自定义验证规则来验证 API 请求。
请求 Class:
这是我的请求验证规则。
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class LoginRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'username' => 'required',
'password' => 'required'
];
}
public function messages()
{
return [
'username.required' => 'The Username field is required',
'password.required' => 'The Password field is required'
];
}
}
API Controller:
这是我的 API controller 和方法。
use Illuminate\Http\Request;
use App\Http\Controllers\API\BaseController as BaseController;
use Illuminate\Support\Facades\Auth;
use App\Http\Requests\LoginRequest;
class LoginController extends BaseController
{
public function login(LoginRequest $request)
{
print_r($validatorMsg);
die();
}
}
无法获得错误信息。
你的代码看起来不错。 对于 AJAX 调用,将自动返回JSON
响应。 请记住,如果发生验证错误,您将无法使用 controller 方法,因此在您的情况下, print_r($validatorMsg);
如果发生任何验证错误,将不会执行。
而是检查为您的请求返回的响应。 在 axios 中,您会得到如下错误:
axios.post('/your-route', data).then((res) => {
console.log('Request succeeded.');
}).catch((err) => {
console.log(err.response.data.errors);
});
这只是一个例子。 您应该检查为您的 API 调用返回的适当响应以捕获结果错误。
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\JsonResponse;
public function login(LoginRequest $request)
{
$validator = Validator::make($request->all(), [
'user_name' => 'required',
'password' => 'required',
]);
if ($validator->fails()) {
$message = $validator->errors()->first();
$errors=$validator->errors();
$code='200';
$response = array(
'success' => false,
'message' => $message,
"errors" => $errors
);
return new JsonResponse($response, $code);
}
}
伙计们,我解决了这个问题,这是解决方案:
public function login(Request $request)
{
$LoginRequest = New LoginRequest;
$validator = Validator::make($request->all(), $LoginRequest->rules(),$LoginRequest->messages());
if($validator->fails()){
return response()->json($validator->errors(), 422);
}
}
在您的 controller 中,您可以检查请求是否有验证错误,如果是,您可以发送 json 响应与您的验证错误。 试试下面的代码
public function login (Request $request) {
if(!$request->validated()) {
return response()->json($request->validator->messages());
}
}
为了在您的 API 中显示错误消息,请在LoginRequest
class 中使用response()
方法,因此您始终返回 JSON。 像这样的东西:
public function response(array $errors)
{
// Always return JSON.
return response()->json($errors, 422);
}
现在尝试提交空表单,您应该可以查看错误消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.