在非对象上调用成员函数isEmpty()?

时间:2014-07-14 14:02:26

标签: laravel laravel-4

我通过以下方式在控制器中查看我的视图:

$data = Lib::index();
    $view = View::make('index')
        ->with('data', $data)
        ->render();
    return $view;

我可以通过以下方式检查控制器中的数据是否为空:

$data->isEmpty();

但是当我在视图中尝试同样的事情时,我得到了错误:

Call to a member function isEmpty() on a non-object

为什么?

这里是Lib :: index()的代码:

   $page = isset($_GET['page']) ? ($_GET['page']) : 1;

    Paginator::setCurrentPage($page);

    try {
        $data = Asset::with(array('sizes'=> function($query){
            $query->select('width', 'height', 'asset_id');
        }))->where('active', 1)->orderBy('updated_at', 'DESC')->paginate(Config::get('p.results_per_page'), array('id', 'alt'));
    }

    catch (QueryException $e) {

        App::abort(404);
    }


    return $data;

3 个答案:

答案 0 :(得分:1)

isEmpty()是一个Collection方法。出于某些奇怪的原因,在视图中,有时会将空Collection称为null。我认为最安全的检查是计数检查,如下所示:

if (count($data)) {...}

这在Controllers和Views中都很好。

答案 1 :(得分:0)

考虑您正在收集一些信息;

$UserInfo = User::where('phone', $phone_number)->first();

使用此代码进行错误检查

if(empty($UserInfo)){
                return redirect()->back()->withErrors('we don't have a user with this phone number ');
            }

并将以下代码添加到刀片中

@if(count($errors)>0)

    <div class="alert alert-danger">
        <ul>

            @foreach($errors->all() as $error)

                <li>{{$error}}</li>

            @endforeach
        </ul>
    </div>
@endif

最诚挚的问候

答案 2 :(得分:-1)

尝试

> var_dump($data);

在视图中。

看看它出现了什么。这可能有助于进一步调查错误。

然后按照

继续
>  foreach($data as $moredata){ 
>      $moredata->isEmpty();  }

应该工作。