当有值时,Laravel Eloquent empty()函数为$ request-> url返回true

时间:2015-07-08 13:43:49

标签: php html laravel request eloquent

我有一个请求,其中包含用户输入并提交的URL链接(在Laravel中)。

SomeRequest ▼
  +request: ParameterBag ▼
    #parameters: array:4 ▼
      "title" => "cake"
      "url" => "www.someurl.com"

在我的控制器中,当我调用empty($request->url)时,即使它实际上不是空的,它也会返回true。我试图寻找这种困境的答案无济于事。

感谢。

1 个答案:

答案 0 :(得分:2)

问题是$request->url不是普通属性。在内部调用魔术方法__get(),然后通过一些其他方法返回参数包中的值。

如果属性存在,

empty()不知道并且只是检查(与isset()相同)。即使您可以访问false,这也是url的原因。

最好的解决方案可能是has()

$request->has('url'); // returns true

请注意,这可以在框架中“修复”。这是通过实施魔术方法__isset()来实现emptyisset检查时调用的方法。