我有这个要求:
GET http://example.com/test?q[]=1&q[]=2&q[]=3
我有这条路:
Route::get('test', function(Request $req) {
$req->validate(['q' => 'array']);
});
如何使用Laravel验证器为此数组的每个元素添加其他验证规则?例如,我想检查每个q
值是否至少为2。
感谢您的帮助。
答案 0 :(得分:2)
查看有关validating arrays的文档。
$validator = Validator::make($request->all(), [
'person.*.email' => 'email|unique:users',
'person.*.first_name' => 'required_with:person.*.last_name',
]);
您也可以使用Request对象documentation about validation logic在控制器中执行此操作。
public function store(Request $request)
{
$validatedData = $request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
// The blog post is valid...
}
当您拥有大量验证规则并希望在应用程序中分离逻辑时,还有第三种选择。看看Form Requests
1)创建表单请求类
php artisan make:request StoreBlogPost
2)在app / Http / Requestsdirectory中创建的类添加规则。
public function rules()
{
return [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
];
}
3)在您的控制器中检索请求,它已经过验证。
public function store(StoreBlogPost $request)
{
// The incoming request is valid...
// Retrieve the validated input data...
$validated = $request->validated();
}
答案 1 :(得分:1)
你可以这样做:
Route::get('test', function(Request $req) {
$req->validate([
'q' => 'array',
'q.*' => 'min:2'
]);
});
有关数组验证的更多信息,请参阅=> laravel.com/docs/5.6/validation#validating-arrays
答案 2 :(得分:0)
假设我有一组用户
users: [
{
"id": 1,
"name": "Jack",
},
{
"id": 2,
"name": "Jon"
}
]
我会像下面一样验证它:
$request->validate([
'users[*]'=> [
"id" => ["integer", "required"],
"name" => ["string", "required"]
]
]);
此处 * 用作占位符