我如何制定动态规则? Laravel 5.3

时间:2017-06-11 06:14:56

标签: php laravel laravel-5.3 rules

我的情况就是这样

我的观点是这样的:

@for($i = 0; $i < 5; $i++) 
    <input type="hidden" name="photo-{{$i}}">
    ...
@endfor

我的规则是这样的:

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class CreateProductRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }
    public function rules()
    {
        return [
            ...
            'photo-0'=> 'required'
        ];
    }
}

我的控制器是这样的:

public function store(CreateProductRequest $request)
{
    dd($request->all());
}

从代码中,名称photo-0是必需的

但我想让它成为恐怖的

因此不需要照片0,但至少需要一张照片

例如photo-0没有值,但是photo-3有值,那么它可以在store方法中运行语句

我该怎么做?

更新

如果我分析它,似乎返回数组中会有一个循环(在rules方法中)。这可能吗?

我试着这样:

public function rules()
{
    for($i = 0; $i < 5; $i++){
        $photo[] = 'photo-'.$i;
    }
    return [
        ...
        'photo'=> 'required'
    ];
}

但它不起作用

1 个答案:

答案 0 :(得分:0)

请检查以下视图和控制器代码,它可以正常工作,因此您可以根据此

调整视图代码

视图

<body>

<form method="post" action="/testingFiles" enctype="multipart/form-data">
    {{csrf_field()}}
    <input type="file" name="filesUpload[]">
    <input type="file" name="filesUpload[]">
    <input type="file" name="filesUpload[]">
    <button type="submit">Submit</button>

</form>

@if (count($errors))
    <ul>
        @foreach($errors->all() as $error)
            <li>{{$error}}</li>
        @endforeach
    </ul>
@endif

控制器代码

public function store(Request $request)
    {
        $this->validate($request, [
            'filesUpload' => 'required'
        ]);
        dd($request->all());
    }