将计数器变量从控制器传递到laravel 5中的View

时间:2015-10-20 10:16:23

标签: php laravel controller views blade

我正试图在我的laravel网站上制作一个计数器。此计数器获取模型 Comments 中的所有注释,这些注释是从Carbon :: now()创建的,直到startofMonth()。所以我有我的控制器和功能计数器:

 class CommentsController extends Controller
{
        public function counter()
    {
        $new_comments=Comments::where('created_at', Carbon::now()->startofMonth())->get();

        $counted->count($new_comments['created_at']);


        return View::make('pages.dashboard')->with('new_comments', $counted);        
    }
}

我的刀片模板:

<div class="row">
       <div class="col-xs-3">
             <i class="fa fa-comments fa-5x"></i>
       </div>
           <div class="col-xs-9 text-right">
              <div class="huge">{{!!$new_comments!!}}</div>
              <div>New Comments!</div>
</div>

即使在控制器中调用变量,我仍然会收到变量未定义的错误消息!在刀片模板中未调用变量时,仪表板页面可正常工作。

编辑:

如果忽略控制器并将以下内容添加到我的视图中,我已设法使其正常工作:

{{App\Comments::count()}}

这只显示表Comments中的总行数,但我会尝试将mySQL查询添加到其中。

我仍然不知道为什么它不能从控制器调用为变量。

4 个答案:

答案 0 :(得分:0)

在您的刀片模板中,您正确调用它,但是!带来这样的问题{{!!$new_comments!!}}它会说变量未定义。

没有!!尝试它,它对我有用。

答案 1 :(得分:0)

首先:你想要从月初到现在创建所有评论,你需要一个whereBetween查询,不等于。

第二:你调用一个未定义的变量$ count。我认为你需要删除

$counted->count($new_comments['created_at']);

并传递$ new_comments而不是$ count

return View::make('pages.dashboard')->with('new_comments', $new_comments);  

并在视图中显示评论数

{{ $new_comments->count() }}

希望这能帮到你

答案 2 :(得分:0)

这是一个迟到的答案,但我相信您使用public class TestingSwitch { public static void main(String args) { int cnt = 1; switch(cnt){ default: System.out.println("Welcome"); case 1: System.out.println("One"); break; case 2: System.out.println("Two"); break; } } 函数错误地传递了您的变量。根据我使用Laravel的经验,->with()使用数组语法将多个变量传递给视图。例如:

->with()

然后,在 return View::make('pages.dashboard') ->with(["new_comments" => $new_comments, "counted" => $counted]); // Note the array usage, works with [] or array() 中,您可以调用dashboard.blade.php{{ $new_comments }}来回显该值(一个忽略HTML标记,一个包含它。)

另一方面,尝试回显Eloquent集合的内容(即{!! $new_comments !!}而不是Comment::get())可能无效。你应该循环结果并相应地回应:

Comment::first()

答案 3 :(得分:0)

这已经解决了。我在另一个(页面)控制器中调用返回视图:: make(仪表板)。这个控制器先例,因此没有出现这种观点。因此,在我的页面控制器中,我应用了以下内容:

public function dashboard()
    {
        $count = Comments::where('created_at', '>', Carbon::today())->count();

        return View::make('pages.dashboard')->with('new_comments_count', $count);
    }

然后我可以在我的视图中调用new_comments_count。 非常感谢你的帮助。