Laravel 5.1将数据传递给部分

时间:2016-06-14 12:59:50

标签: php laravel

我有一个控制器,我在登录用户的项目中获得未读评论。现在我的问题是我需要在我的导航部分中的这些数据在我的所有视图上显示它。但不幸的是,这不起作用。

这是我的路线:

Route::get('/', 'KlantController@getUnreads');

这是我在KlantController中的功能

public function getUnreads(){
        $uid = Auth::user()->id;
        $projects = User::find($uid)->projects;

        //comments
        if (!empty($projects)) {
            foreach ($projects as $project) {     
                $comments_collection[] = $project->comments;
            }
        }

        if (!empty($comments_collection)) {
            $comments = array_collapse($comments_collection);
            $unreads = collect($comments)->where('unread', "1")->count();
        }
        return view('partials.nav', $unreads);
    }

在这里我使用部分数据。

@if($unreads > 0)
  <span class="label label-danger">{{ $unreads }}</span>
@endif

非常烦人,这给了我多次以下错误:

Undefined variable: unreads (View: /var/www/resources/views/partials/nav.blade.php)

任何人都知道如何解决这个问题?任何帮助表示赞赏!

非常感谢提前:)

4 个答案:

答案 0 :(得分:1)

您传递的数据应该是具有键/值对的数组。

来自Laravel documentation

  

以这种方式传递信息时,$ data应该是一个数组   键/值对。在视图中,您可以访问每个值   使用其对应的密钥

在您的情况下,您可以使用compact功能。

return view('partials.nav', compact('unreads'));

答案 1 :(得分:0)

试试这个:

在你的功能中:

return view('partials.nav', ['unreads' => $unreads]);

在您看来:

@if(count($unreads) > 0)
  @foreach ($unreads as $unread)
     <span class="label label-danger">{{ $unread }}</span>
  @endforeach
@endif

答案 2 :(得分:0)

return view('partials.nav')->with(['unreads' => $unreads]);

在你的控制器中,你可以这样开始:

$uid = Auth::user()->id;
$projects = User::find($uid)->projects;
$unreads = 0

因此,如果没有评论,则无论如何都会在您的视图中存在$ unreads vars。

答案 3 :(得分:0)

我目前正在为Laravel 5.1中的一个客户端工作(是的,我知道请不要问)。

无论如何都可以帮助别人。

在控制器中:

public function blogIndex()
{
    $posts = Blog::orderBy('date')
        ->where('status', 'Published')
        ->whereDate('date', '<', Carbon::now())
        ->paginate(10);

    return view('pages.blog.index', compact('posts'));
}

在其中一种视图中,我们有部分观点。

@include('partials.blog-categories-nav', ['posts' => $posts]);

在那部分resources/views/partials/blog-categories-nav.blade.php

{{ dd($posts) }}

您可以清楚地看到以下输出:

Did and Dump

也许,也许你们忘了在{{ }}中加入$,大括号或$var

如果由于某种原因它仍然无法正常工作,则可以随时在视图中使用{{ dd(get_defined_vars()) }}

将以我们熟知的 die and dump dd格式输出所有变量。

干杯希望这会帮助某人;

祝您编码愉快。

与开发人员一起度过美好的一天。