vadliator 不工作 return 200 OK
vadliator is not working and return 200 OK
正在尝试验证它,但它似乎没有进行验证,return 200 OK。我不知道这是怎么回事。当我调试它时,我仍然找不到它不工作的原因。
来自服务的规则class
protected $rules = [
'username' => 'required|max:20|unique:users',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required',
// **in Production **
// 'password' => [
// 'required',
// 'min:6',
// 'regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/',
// 'confirmed'
// ],
/**
* Three of the five rules.
* English uppercase characters (A – Z)
* English lowercase characters (a – z)
* Base 10 digits (0 – 9)
* Non-alphanumeric (For example: !, $, #, or %)
* Unicode characters
*/
'first_name' => 'required|string|max:255',
'last_name' => 'required|string|max:255',
'phone' => 'required|regex:/^([0-9\s\-\+\(\)]*)$/|min:5',
'role' => 'required',
];
从服务验证方法 class
public function validate($user)
{
$validator = Validator::make($user, $this->rules);
$validator->validate();
}
控制器中的存储方法
public function store(Request $request)
{
$validate = $this->userService->validate($request->all());
if ($validate->fails()) {
return response()->json(['message' => $validate->failed()], 400);
} else {
try {
$user = $this->userService->createUser($request);
return response()->json($user, 201);
} catch (Exception $e) {
return response()->json(['message' => $e->getMessage()], 500);
}
}
}
如何更改服务 class 中的 validate()
方法,使其 returns 某些内容,例如:
public function validate($user)
{
$validator = Validator::make($user, $this->rules);
if ($validator->fails()) {
/* Here you can also return something like
return redirect('yourView')
->withErrors($validator)
->withInput();
*/
// Or you can simply
return false;
}
return true;
}
然后在控制器中你可以这样检查它:
$validate = $this->userService->validate($request->all());
if ($validate)
{
// Validation was successfull
} else {
// Validation was not successfull
}
你不应该在服务 class 中验证你的请求,而是使用 Larvel 的 Custom Form Request ,它允许你只指定规则,它将处理失败的情况(返回你的浏览器和在模板中设置 $errors
变量,或发送适当的 JSON 响应)。
基本上你会有
public function store(CreateUserRequest $request)
{
// if you reach here, validation passed.
try {
$user = $this->userService->createUser($request);
return response()->json($user, 201);
} catch (Exception $e) {
return response()->json(['message' => $e->getMessage()], 500);
}
}
正在尝试验证它,但它似乎没有进行验证,return 200 OK。我不知道这是怎么回事。当我调试它时,我仍然找不到它不工作的原因。
来自服务的规则class
protected $rules = [
'username' => 'required|max:20|unique:users',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required',
// **in Production **
// 'password' => [
// 'required',
// 'min:6',
// 'regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/',
// 'confirmed'
// ],
/**
* Three of the five rules.
* English uppercase characters (A – Z)
* English lowercase characters (a – z)
* Base 10 digits (0 – 9)
* Non-alphanumeric (For example: !, $, #, or %)
* Unicode characters
*/
'first_name' => 'required|string|max:255',
'last_name' => 'required|string|max:255',
'phone' => 'required|regex:/^([0-9\s\-\+\(\)]*)$/|min:5',
'role' => 'required',
];
从服务验证方法 class
public function validate($user)
{
$validator = Validator::make($user, $this->rules);
$validator->validate();
}
控制器中的存储方法
public function store(Request $request)
{
$validate = $this->userService->validate($request->all());
if ($validate->fails()) {
return response()->json(['message' => $validate->failed()], 400);
} else {
try {
$user = $this->userService->createUser($request);
return response()->json($user, 201);
} catch (Exception $e) {
return response()->json(['message' => $e->getMessage()], 500);
}
}
}
如何更改服务 class 中的 validate()
方法,使其 returns 某些内容,例如:
public function validate($user)
{
$validator = Validator::make($user, $this->rules);
if ($validator->fails()) {
/* Here you can also return something like
return redirect('yourView')
->withErrors($validator)
->withInput();
*/
// Or you can simply
return false;
}
return true;
}
然后在控制器中你可以这样检查它:
$validate = $this->userService->validate($request->all());
if ($validate)
{
// Validation was successfull
} else {
// Validation was not successfull
}
你不应该在服务 class 中验证你的请求,而是使用 Larvel 的 Custom Form Request ,它允许你只指定规则,它将处理失败的情况(返回你的浏览器和在模板中设置 $errors
变量,或发送适当的 JSON 响应)。
基本上你会有
public function store(CreateUserRequest $request)
{
// if you reach here, validation passed.
try {
$user = $this->userService->createUser($request);
return response()->json($user, 201);
} catch (Exception $e) {
return response()->json(['message' => $e->getMessage()], 500);
}
}