laravel 在控制器中的所有方法之间共享变量

imr*_*ran 2 php variables layout controller laravel

我正在 PHP laravel 框架中制作一个简单的网站,其中顶部导航链接是从数据库动态生成的。我在主控制器操作中生成 $pages 变量并传递给布局文件。我的代码如下:

 public function home()
{
    $pages = Page::all();
    return View::make('home')->with('pages', $pages);
}

public function login()
{
    return View::make('login');
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试访问登录操作时,我得到错误变量 $pages not found 因为 $pages 变量在布局文件中被访问。如何在控制器中的所有操作中共享相同的变量?

oma*_*ari 5

我认为一个相当简单的方法是使用控制器的构造函数。有时能够从该控制器内看到控制器中所有方法可用的变量是有帮助的,而不是隐藏在某个服务提供者中的某个地方。

class MyController extends BaseController
{
    public function __construct()
    {
        view()->share('sharedVar', 'some value');
    }

    public function myTestAction()
    {
        view('view.name.here');
    }
}
Run Code Online (Sandbox Code Playgroud)

在视图中:

<p>{{ $sharedVar }}</p>
Run Code Online (Sandbox Code Playgroud)