从控制器传递的变量不存在

时间:2015-12-07 20:37:04

标签: php laravel laravel-5

我正在尝试将带有数据库信息的变量从控制器传递给视图。

public function getPrivateCount($term) {
    $data["private_count"] = '0';

    $privateCount = \DB::table("users")->where("username", "LIKE", "%". $term . "%")
                               ->orWhere("firstName", "LIKE", "%". $term . "%")
                               ->orWhere("lastName", "LIKE", "%". $term . "%")
                               ->orWhere("displayName", "LIKE", "%". $term . "%")
                               ->where("private", true)
                               ->count();

    if($privateCount){  
        $data['private_count'] = $privateCount;
    }

    return view('search.hl')->with($data);
}

在视图上调用它:

<div>Testing: [[ $private_count ]]</div>

但我得知变量不存在:

  

未定义变量:private_count(查看:/var/www/build/resources/views/search/hl.blade.php)

为什么会发生这种情况,我做错了什么?

2 个答案:

答案 0 :(得分:3)

要考虑两件事。

首先正确传递数据

return view('search.hl')->with(['data' => $data]);

然后阅读你的变量:

<div>Testing: {{ $data['private_count'] }}</div>

答案 1 :(得分:0)

你也可以使用:

return view('search.hl', compact('data'));

如果你想传递多个变量,可以像这样扩展:

return view('search.hl', compact('data', 'data2'));
如果你问我,有点干净。 Laravel会检测你想做什么。如果有一个名为data的变量,它将被传递给具有相同名称的视图。