是否可以从多个控制器输出到同一视图。我有一个叫做“仪表板”的视图。我有两个变量:$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'
    ]);

最佳答案

@amartya barua,您可以使用view composer为多个视图共享一些变量https://laravel.com/docs/5.8/views,也可以创建baseservice,编写可重用的getter并将baseservice注入控制器,这样您就可以访问控制器所需的getter,如果有任何问题,请评论我的答案。

10-05 21:49