将数据传递给 Laravel 中控制器提供的所有视图

Passing data to all views served by a controller in Laravel

我的控制器有两种方法,每种方法提供不同的视图:

class NavController extends Controller {
 public function posts()
 {
  $posts = Post::all();
  $tabs = Tag::all();
  return view('posts')->with('posts', => $posts, 'tags' => $tags);
 }
 public function users()
 {
  $users = User::all();
  $tabs = Tag::all();
  return view('users')->with('users', => $users, 'tags' => $tags);
 }
}

我希望避免在每个方法中编写用于检索和传递标签的逻辑,因此我想知道是否有一种方法可以在控制器的一个位置检索数据,然后默认将其传递给每个方法此控制器提供的视图。

我认为值得一提的是,我不想在所有视图之间共享此数据,因此,例如,我可以在不同的控制器中使用标签变量来根据不同的逻辑提供标签。

在 class 构造函数上使用 View::share

use View;

class NavController extends Controller {
    function __construct() {
        View::share('tags', Tag::all());
    }
    public function posts()
    {
        $posts = Post::all();
        return view('posts')->with('posts', => $posts);
    }
    public function users()
    {
        $users = User::all();
        return view('users')->with('users', => $users);
    }
}