【问题标题】:Checking if a request array is empty in Laravel在 Laravel 中检查请求数组是否为空
【发布时间】:2017-07-02 23:42:38
【问题描述】:

我有一个动态生成的表单,它给了我一个输入数组。但是数组可能是空的,那么 foreach 就会失败。

    public function myfunction(Request $request)
    {
    if(isset($request))
     {
       #do something
     }

    }

这显然不起作用,因为它是一个 $request 对象并且总是被设置。但是我不知道如何检查是否有任何输入。

有什么想法吗?

【问题讨论】:

    标签: php arrays laravel


    【解决方案1】:

    一个简单的计数检查就可以了

    if (count($request->all())) {
      // foreach here.
    }
    

    【讨论】:

      【解决方案2】:

      如果您有您期望的表单输入的参考,那么Request::has() 可能是一个很好的使用方法。 Request::all() 可能包含 XSRF 令牌之类的内容,并且会给您带来误报。

      【讨论】:

        【解决方案3】:

        我总是通过向App\Http\Controllers 目录中的Controller 添加一个函数来执行此操作。

        use Illuminate\Http\Request;
        public function hasInput(Request $request)
        {
            if($request->has('_token')) {
                return count($request->all()) > 1;
            } else {
                return count($request->all()) > 0;
            }
        }
        

        相当不言自明,如果_token 之外的其他输入变量返回true,或者如果没有token 并且包含其他变量,则返回true。

        【讨论】:

        • 你可以通过去掉那些内部的if 语句来简化这个函数,而是使用return count($request->all()) > 0;return count($request->all()) > 1;
        • ^ 完全正确。不需要其他的。第一个 if 语句将返回 true 或 false。
        【解决方案4】:

        Request 类有一个except() 方法,该方法包括除定义的键之外的所有内容。所以:

        if ( !empty( $request->except('_token') ) )
        

        当请求数组中有“东西”时执行代码。

        【讨论】:

        • 如果 (!empty($request->except('_token','_method')))),我会这样做
        【解决方案5】:

        上面的@Saravanan 代码的简单修改。我同意他的观点,即简单检查请求中的输入总数即可。

        if(count($request->all()) >= 1)
        {
           //execute if the request has one or more input fields
        }
        else {
          //executes if the request is totally empty.
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-27
          • 2015-03-02
          • 2020-06-05
          • 1970-01-01
          • 2017-09-13
          相关资源
          最近更新 更多