从不同的控制器输出到同一视图

时间:2019-05-11 03:27:42

标签: php html laravel

是否可以从多个控制器输出到同一视图。我有一个称为“仪表盘”的视图。我有两个变量:$users$friends。我想将数据从不同的控制器发送到这些变量。我需要将两个控制器添加到同一路由吗?

视图:

<div class="panel friendlist" id="friendlist">
            <div class="panel-heading"><h3 class="panel-title">Result List</h3>
            </div>
            <div class="panel-body">
                <ul class="list-group">
                    @foreach($friends as $friend)
                    <li class="list-group-item"><a href="">{{ $friend->username }}</a>
                    </li>
                    @endforeach
                </ul>
            </div>
        </div>
    </section>
    <section class="row posts">
        <div class="col-md-6 col-md-3-offset">
            <header><h3>other posts</h3></header>
            @foreach($posts as $post)
            <article class="post">
                <p>{{ $post->content }}</p>
                <div class="info">Posted by {{ $post->user->username }} on {{ $post->created_at }}</div>

后控制器:

public function getDashboard()
    {
        $posts = Post::orderBy('created_at','desc')->get();
        return view('dashboard',['posts' => $posts]);
    }

朋友控制者:

public function getFriends()
    {
        $friends = Auth::user()->friends()->where('status','accepted')->get();

        return view('dashboard',['friends' => $friends]);
    }

当前路线:

Route::get('/dashboard',[
        'uses' => 'PostController@getDashboard',
        'as' => 'dashboard',
        'middleware' => 'auth'
    ]);

2 个答案:

答案 0 :(得分:0)

@Amartya Barua,您可以使用视图编辑器将变量共享给多个视图https://laravel.com/docs/5.8/views,或者可以创建BaseService,并编写可重用的getter并将BaseService注入到控制器中,从而可以访问控制器需要的吸气剂,如果有任何问题评论我的答案

答案 1 :(得分:0)

您可以做的简单的事情就是

  1. 首先创建一个模型,然后在该模型中为这两个变量值创建两个函数。

  2. 在要使用仪表板作为视图的控制器中,将模型添加到控制器中,然后简单地传递该模型的调用函数,然后将此函数值传递给视图。