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