【发布时间】:2020-10-01 01:43:14
【问题描述】:
我正在使用 RegisterRequest 请求类创建一个注册函数,它应该验证请求:
public function register(RegisterRequest $request)
{
//
}
请求验证(RegisterRequest)如下所示:
<?php
namespace App\Http\Requests\Api\User;
use App\Http\Requests\Request;
class RegisterRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true; // TODO: should secure this.
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'email' => 'required|email|unique:users,email',
];
}
}
但我收到名称和电子邮件丢失的错误,我认为这是因为请求是以 JSON 格式发送的。如何使此请求验证我提供的 JSON 输入?提前致谢。
我提出请求的方式:
handleSubmit (data) {
// Register User
this.$http
.post('/api/user/register', data)
.then(response => {
console.log(response)
// Clear form
// Show snackbar
})
.catch(error => {
console.error(error)
})
.finally(
// Update items in DataTable
console.log(data)
)
}
当我console.log(data); 时,它会告诉我这个:
{"name":"asdsfsdf","email":"sdfsfd@sdfs.com"}
当我尝试这样验证时:
$validator = Validator::make($request->json()->all(), [
'name' => 'required',
'email' => 'required|email|unique:users,email',
]);
它可以工作,但我想将此逻辑与控制器分开。
【问题讨论】:
-
无论是不是 JSON,请求应该仍然通过。在浏览器中按 F12 并检查请求以查看数据是否实际发送到服务器
-
当我 dd() $request 我得到这个:
array:1 [ "{"name":"sdfsafsa","email":"fdsafa@sdfs_com"}" => null ]