php 检查Laravel中的请求数组是否为空

yvfmudvl  于 2023-02-03  发布在  PHP
关注(0)|答案(5)|浏览(170)

我有一个动态生成的表单,它给了我一个输入数组。然而,数组可能是空的,那么foreach将失败。

public function myfunction(Request $request)
    {
    if(isset($request))
     {
       #do something
     }

    }

这显然不起作用,因为它是一个$request对象,并且总是被设置的。但是我不知道如何检查是否有任何输入。
有什么想法吗?

xxls0lw8

xxls0lw81#

简单的清点一下就行了

if (count($request->all())) {
  // foreach here.
}
koaltpgm

koaltpgm2#

我总是通过在App\Http\Controllers目录下的Controller中添加一个函数来完成安装。

use Illuminate\Http\Request;
public function hasInput(Request $request)
{
    if($request->has('_token')) {
        return count($request->all()) > 1;
    } else {
        return count($request->all()) > 0;
    }
}

如果其他输入变量在_token之外,则返回true,如果没有token并且包含其他变量,则返回true,这是不言自明的。

h5qlskok

h5qlskok3#

Request类有一个except()方法,它包含了除定义的key之外的所有内容,因此:

if ( !empty( $request->except('_token') ) )

当请求数组中存在“某物”时执行代码。

x4shl7ld

x4shl7ld4#

如果您有所需表单输入的引用,那么Request::has()可能是一个不错的方法。Request::all()可能包含诸如XSRF令牌之类的内容,并会给您带来误报。

bvjveswy

bvjveswy5#

一个简单的修改@Saravanan上面的代码。我同意他的意见,一个简单的检查输入的请求总数将做。

if(count($request->all()) >= 1)
{
   //execute if the request has one or more input fields
}
else {
  //executes if the request is totally empty.
}

相关问题