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(),当 emptyisset 检查为 运行.

时调用该方法