我已经使用Laravel很长时间了,我现在正在使用Lumen编写一个微型项目。
我需要将一些变量传递给所有视图。在Laravel中,我可以在中间件或控制器的构造函数中使用View::share()
函数,但是在Lumen中没有View
类,看起来所有视图功能都只是别名View::make()
。
有没有办法将所有视图共享变量?
出于性能原因,Lumen不会像Laravel那样注册外墙和服务提供商。虽然 Laravel 立面包含在 Lumen 中,但只有一些是锯齿的(View
不是其中之一),并且只有当您取消注释bootstrap/app.php
中的$app->withFacedes();
行时(您可以检查 LaravelLumenApplication::withFacades
方法以查看哪些)。因此,为了使用其他立面,例如 View
,您需要自己为立面类指定别名:
// "bootstrap/app.php" is a good place to add this
class_alias('IlluminateSupportFacadesView', 'View');
或者,您可以在任何需要的地方将其包含在use
中:
use IlluminateSupportFacadesView;
在 Lumen 中与视图共享数据的正确方法是:
app('view')->share(...);
Lumen 文档中未明确描述的一些 Laravel 功能可以使用 Lumen 的app()
辅助函数进行访问。