我有一个包含url链接的请求,用户输入并提交(在Laravel中)。
SomeRequest ▼
+request: ParameterBag ▼
#parameters: array:4 ▼
"title" => "cake"
"url" => "www.someurl.com"
在我的控制器中,当我调用empty($request->url)
时,它返回true,即使它实际上不是空的。我曾试图寻找解决这个困境的办法,但无济于事。
谢谢。
问题是$request->url
不是正常的属性。内部调用魔术方法__get()
,然后通过其他几个方法从参数包返回值。
empty()
不知道这一点,只是检查(与isset()
相同的方式)如果属性存在。这就是为什么你得到false
,即使你可以访问url
。
最好的解决方案可能是检查has()
:
$request->has('url'); // returns true
请注意,有一种方法可以在框架中"修复"这个问题。这是通过实现魔术方法__isset()
,当empty
或isset
检查运行时调用。