Laravel/Lumen: View::share() alternative?


Laravel/Lumen: View::share() alternative?

我已经使用Laravel很长时间了,我现在正在使用Lumen编写一个微型项目。

我需要将一些变量传递给所有视图。在Laravel中,我可以在中间件或控制器的构造函数中使用View::share()函数,但是在Lumen中没有View类,看起来所有视图功能都只是别名View::make()

有没有办法将所有视图共享变量?

出于性能原因,Lumen不会像Laravel那样注册外墙和服务提供商。虽然 Laravel 立面包含在 Lumen 中,但只有一些是锯齿的(View不是其中之一),并且只有当您取消注释bootstrap/app.php中的$app->withFacedes();行时(您可以检查 Laravel'Lumen'Application::withFacades 方法以查看哪些)。因此,为了使用其他立面,例如 View ,您需要自己为立面类指定别名:

// "bootstrap/app.php" is a good place to add this
class_alias('Illuminate'Support'Facades'View', 'View');

或者,您可以在任何需要的地方将其包含在use中:

use Illuminate'Support'Facades'View;

在 Lumen 中与视图共享数据的正确方法是:

app('view')->share(...);

Lumen 文档中未明确描述的一些 Laravel 功能可以使用 Lumen 的app()辅助函数进行访问。