Php Laravel返回了一张空白页,上面写着“我不知道”;如果;验证

Php Laravel返回了一张空白页,上面写着“我不知道”;如果;验证,php,laravel,Php,Laravel,我是拉威尔的新手,我正在努力解决这个问题。我想进行验证,用户必须选择至少3个值才能继续。我尝试使用count($array)但它不起作用,我知道我做错了什么,但我不知道该怎么做。当我在返回空白页之前尝试代码时 在我的onboard.blade.php中,我有这个表单 <form action="{{ url('/onboarding') }}" method="POST"> @csrf @foreach($categories as $category)

我是拉威尔的新手,我正在努力解决这个问题。我想进行验证,用户必须选择至少3个值才能继续。我尝试使用
count($array)
但它不起作用,我知道我做错了什么,但我不知道该怎么做。当我在返回空白页之前尝试代码时

在我的
onboard.blade.php
中,我有这个表单

    <form action="{{ url('/onboarding') }}" method="POST">
    @csrf
      @foreach($categories as $category)
        <div class="radio-item">
       <!-- <input class="form control" name="category_id" value="{{$category->id}}" type="hidden"> -->
       <input type="checkbox" id="category_id" name="category_id[]" value="{{$category->id}}">
          <label for="name">{{ $category -> title }}</label>
        </div>
        @endforeach

        <div class="form-row">
          <div class="form-group col-md-12 text-center">
            <button type="submit">Proceed to Authors</button>
          </div>
        </div>
      </form>

如果你的条件是错误的呢!你不写信。因此,将return语句移到if条件之外

public function categoryUser (Request $request)
{
    $category_id = request('category_id');

    if (count($category_id) >= 3) {
        $user = Auth::user();
        $user->categories()->attach($request->input('category_id'));
    }
    return redirect ( route ('onboarding_author'));
}

另一方面,如果您愿意,您实际上可以使用验证器。您可以使用如下规则:

'category_id'=>'数组|最小值:3',
'category_id.*'=>'integer',
您可以使用请求对象进行快速验证:

public function categoryUser(Request $request)
{
    $request->validate([
        'category_id' => 'array|min:3',
        'category_id.*' => 'integer',
    ]);

    // ... passed validation
}
如果验证失败,它将导致重定向返回

我认为的解决方案是正确的,但如果您不想直接重定向用户,可以使用以下方法手动重定向用户:

if ($validator->fails()) {
   // Validation Fails Here...
   return redirect()->back()->withErrors($validator)->withInput();
}

如果小于3,你该怎么办?你还没有写代码来做什么,所以它什么也不做。我不明白你的代码说如果>=3怎么办,但它没有说如果是的话怎么办
if ($validator->fails()) {
   // Validation Fails Here...
   return redirect()->back()->withErrors($validator)->withInput();
}