我有一个请求,其中包含用户输入并提交的URL链接(在Laravel中)。
SomeRequest ▼
+request: ParameterBag ▼
#parameters: array:4 ▼
"title" => "cake"
"url" => "www.someurl.com"
在我的控制器中,当我调用empty($request->url)
时,即使它实际上不是空的,它也会返回true。我试图寻找这种困境的答案无济于事。
感谢。
答案 0 :(得分:2)
问题是$request->url
不是普通属性。在内部调用魔术方法__get()
,然后通过一些其他方法返回参数包中的值。
empty()
不知道并且只是检查(与isset()
相同)。即使您可以访问false
,这也是url
的原因。
最好的解决方案可能是has()
:
$request->has('url'); // returns true
请注意,这可以在框架中“修复”。这是通过实施魔术方法__isset()
来实现empty
或isset
检查时调用的方法。