使用 laravel 控制器检查是否至少有一个输入值

Check if at least one input has value with laravel controller

我有一个简单的表单,用户应该只能填写他想要的输入,但如果表单没有至少填写一个输入,它应该 return 一条错误消息说表单点击提交按钮不能为空

这是我的表格:

  @if ($message = Session::get('success'))
                <div class="alert alert-success alert-block">
                        <strong>{{ $message }}</strong>
                </div>
                @endif
            </center>
            <form action="{{ route('send-update') }}" method="POST" enctype="multipart/form-data">   @csrf
             
            <label>Nome do projeto:</label>
            <div class="input-group mb-3"><br>
                <input type="text" class="form-control" name="project_name" aria-label="Username" aria-describedby="basic-addon1">
              </div>
           @error('project_name')
            <div class="text-danger" style="float:left; margin-top:-10px" role="alert">
            <small> {{$message}}</small>
                </div>
            @enderror
              <br>
              <label>Descrição:</label>
              <div class="input-group mb-3"><br>
                <textarea class="form-control" name="desc" aria-label="With textarea"></textarea>
                </div>
                @error('desc')
                <div class="text-danger" style="float:left; margin-top:-10px" role="alert">
                <small> {{$message}}</small>
                    </div>
                @enderror
                <br>
                <label>Tem alguma imagem que queira mudar/inserir?</label>
                <div class="input-group mb-3">
                    <input type="file" name="img" accept="image/*" class="form-control" id="inputGroupFile01">
                  </div>
                  @error('img')
                  <div class="text-danger" style="float:left; margin-top:-10px" role="alert">
                  <small> {{$message}}</small>
                      </div>
                  @enderror
                <div class="input-group mb-3">
                    <input type="text" class="form-control" name="img_desc" placeholder="Diga-nos onde pretende mudar/adicionar">
                  </div>
                  @error('img_desc')
                  <div class="text-danger" style="float:left; margin-top:-10px" role="alert">
                  <small> {{$message}}</small>
                      </div>
                  @enderror
                  <br>
                  <label>Tem mais informações? Insira um arquivo .txt, docx ou pdf</label>
                  <div class="input-group mb-3">
                    <input type="file" name="ficheiro" accept=".xlsx,.xls,.doc, .docx,.ppt, .pptx,.txt,.pdf" class="form-control" id="inputGroupFile01">
                  </div>
                  @error('ficheiro')
                  <div class="text-danger" style="float:left; margin-top:-10px" role="alert">
                  <small> {{$message}}</small>
                      </div>
                  @enderror
                  <br>
                  <input type="hidden" name="id" value="{{ request('id') }}">
                <center> <button type="submit" class="btn btn-secondary ">Fazer pedido de atualização</button></center><br>
            </form>

这是控制器:

public function sendUpdate(Request $request){

        $id = $request['id'];

        $order = Order::where('id', $id)->first();

       $validator = Validator::make($request->all(), [
          
            'project_name' => ['nullable', 'string', 'max:255', 'regex:/^[a-zA-Z]+$/u]'],
            'desc' => ['nullable', 'string', 'max:255', 'regex:/^[a-zA-Z]+$/u]'],
            'img' => ['nullable', 'image', 'mimes:jpeg,png,jpg,svg', 'max:1024'],
            'img_desc' => ['nullable', 'string', 'max:255', 'regex:/^[a-zA-Z]+$/u]'],
            'ficheiro' => ['nullable', 'csv,txt,xlx,xls,pdf', 'max:2048'],
        ]);

        if (request()->hasFile('ficheiro')){   
            if (request()->file('ficheiro')->isValid()) 
            {
    $fileName = $request->file('ficheiro')->getClientOriginalName();
    $path = $request->file('ficheiro')->storeAs('files', $fileName, 'public');
        }}


        if (request()->hasFile('img')){  
        if (request()->file('img')->isValid()) 
        {
        
    $imageName = $request->file('img')->getClientOriginalName();
    $pathImg = $request->file('img')->storeAs('files', $imageName, 'public');
        }}
       
       Update::create([
            'customer_name' => $order->customer_name,
            'customer_email' => $order->email,
            'project_name' => $order->project_name,
            'project_new_name' => $request['project_name'],
            'description' => $request['desc'],
            'image' => $pathImg ?? '',
            'image_desc' => $request['img_desc'],
            'ficheiro' => $path ?? '',
        ]);
    
    return back()->with('success','Obrigado! Entraremos em contacto consigo em breve!');

    }

我不知道如何检查控制器中的所有输入是否为空。我已经在下面尝试过这个,但它不起作用。它一直在发送表单。

  if(count($request->all()) < 0) {
            return dd('request all input empty.');
        }

你可以这样做。

if(empty(array_filter($request->all()))){
    //All fields are empty.
}