Laravel 请求:判断是否存在输入值
问题
如何在控制器中判断某个输入值是否存在?比如 http://domain.com/foo/bar?name=tom,如何判断是否存在 name?
回答
可通过调用 Illuminate\Http\Request 实例的 has 方法判断请求中是否存在某个输入值(参数)。如果存在, has 方法返回 true,否则返回 false :
if ($request->has('name')) {
    //
}has 方法也可接受一个数组,将判断数组中指定的参数在请求中是否全部存在:
if ($request->has(['name', 'email'])) {
    //
}如果想要判断一个参数在请求中是否存在,并且不为空,需要使用 filled 方法:
if ($request->filled('name')) {
    //
}考虑下面的例子:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TestController extends Controller
{
    public function index(Request $request)
    {
        return [
            'name' => $request->has('name'), 
            'name and email' => $request->has(['name', 'email']),
            'name filled' => $request->filled('name')
        ];
    }
}
看看发起不同的请求URL,输出结果有什么不同。
/test
{
  "name": false,
  "name and email": false,
  "name filled": false
}/test?name=
{
  "name": true,
  "name and email": false,
  "name filled": false
}/test/name=tom&email=
{
  "name": true,
  "name and email": true,
  "name filled": true
} 
           Laravel 社区 Wiki
 Laravel 社区 Wiki
     
             
             
             
             
             关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: