在 Laravel 中检查请求数组是不是为空
Posted
技术标签:
【中文标题】在 Laravel 中检查请求数组是不是为空【英文标题】:Checking if a request array is empty in Laravel在 Laravel 中检查请求数组是否为空 【发布时间】:2017-07-02 23:42:38 【问题描述】:我有一个动态生成的表单,它给了我一个输入数组。但是数组可能是空的,那么 foreach 就会失败。
public function myfunction(Request $request)
if(isset($request))
#do something
这显然不起作用,因为它是一个 $request 对象并且总是被设置。但是我不知道如何检查是否有任何输入。
有什么想法吗?
【问题讨论】:
【参考方案1】:一个简单的计数检查就可以了
if (count($request->all()))
// foreach here.
【讨论】:
【参考方案2】:如果您有您期望的表单输入的参考,那么Request::has()
可能是一个很好的使用方法。 Request::all()
可能包含 XSRF 令牌之类的内容,并且会给您带来误报。
【讨论】:
【参考方案3】:我总是通过向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。
【讨论】:
你可以通过去掉那些内部的if
语句来简化这个函数,而是使用return count($request->all()) > 0;
或return count($request->all()) > 1;
^ 完全正确。不需要其他的。第一个 if 语句将返回 true 或 false。【参考方案4】:
Request 类有一个except()
方法,该方法包括除定义的键之外的所有内容。所以:
if ( !empty( $request->except('_token') ) )
当请求数组中有“东西”时执行代码。
【讨论】:
如果 (!empty($request->except('_token','_method')))),我会这样做【参考方案5】:上面的@Saravanan 代码的简单修改。我同意他的观点,即简单检查请求中的输入总数即可。
if(count($request->all()) >= 1)
//execute if the request has one or more input fields
else
//executes if the request is totally empty.
【讨论】:
以上是关于在 Laravel 中检查请求数组是不是为空的主要内容,如果未能解决你的问题,请参考以下文章