Laravel验证:不需要数组中的必填字段

时间:2018-08-28 16:06:11

标签: laravel laravel-validation

请求可以包含字段allData <- c("Actinomyces.csv", "Bacteria.csv", "COD.csv", "Fungi.csv", "NH3.csv", "NO2.csv", "NO3.csv", "TN.csv", "TP.csv") #CSV files in the working path csvs <- lapply(allData, read.csv) #Store data frames into a list nameList <- c("Actinomyces", "Bacteria", "COD", "Fungi", "NH3", "NO2", "NO3", "TN", "TP") lapply(c(1:9), function(i){assign(nameList[i], csvs[[i]])}) #Doesn't work Map(assign, nameList, csvs) #Doesn't work either mapply(assign, nameList, csvs) #Doesn't work again for (i in 1:9){ assign(nameList[i], csvs[[i]]) } #Only this works ({x:1,y:2}),也可以不包含。例如:

正确(无coord):

coord

正确:

[
    'another_param' => 'value',
],

无效(格式错误的[ 'another_param' => 'value', 'coord' => [ 'x' => 1, 'y' => 2, ], ], ):

coord

是否可以通过标准规则(无自定义和闭包)编写。

我的尝试

[
    'another_param' => 'value',
    'coord' => [
        'x' => 1,
    ],
],

但是,如果请求中不包含'rules' => [ 'coord' => 'array', 'coord.x' => 'required', 'coord.y' => 'required', ], ,则错误:coord字段为必填。

4 个答案:

答案 0 :(得分:1)

您可以使用sometimes验证规则,使其仅在存在该字段时适用。

'rules' => [
    'coord' => 'sometimes|array',
    'coord.x' => 'required',
    'coord.y' => 'required',
],

答案 1 :(得分:0)

使用required_with提供数组时,您可以要求输入字段:

'rules' => [
    'coord' => 'sometimes|array|min:1',
    'coord.x' => 'required_with:coord',
    'coord.y' => 'required_with:coord',
],

sometimes规则允许丢弃此字段,min:1确保在提供此坐标字段时,它不是空数组。

答案 2 :(得分:0)

您可以尝试将数组字段验证为coord.*.x 我的意思是:

'rules' => [
    'coord' => 'array',
    'coord.*.x' => 'required',
    'coord.*.y' => 'required',
],

然后,如果coord数组包含一个元素,则需要x和y

答案 3 :(得分:0)

不确定它是否仍然存在,但我是这样解决的:

'rules' => [
    'coord' => ['nullable', 'array'],
    'coord.x' => 'required_unless:coord,null',
    'coord.y' => 'required_unless:coord,null',
],