用 Laravel 很久了,现在正在用 Lumen 写一个微项目。
我需要将一些变量传递给所有视图。在 Laravel 中,我可以View::share()
在中间件或控制器的构造函数中使用该函数,但在 Lumen 中没有View
类,看起来所有视图功能都只是View::make()
别名。
有没有办法将变量共享给所有视图?
出于性能原因,Lumen 没有像 Laravel 那样注册外观和服务提供者。虽然 Laravel 外观包含在 Lumen 中,但只有一些有别名(View
不是其中之一),并且只有在您取消注释$app->withFacedes();
行时bootstrap/app.php
(您可以检查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()
辅助函数来访问。