gpt4 book ai didi

laravel - 如何声明所有 Blade 文件可用的全局变量?

转载 作者:行者123 更新时间:2023-12-04 07:18:44 28 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Laravel 5 - global Blade view variable available in all templates

(9 个回答)


25 天前关闭。




我有一个数据库中的产品,这些产品基本上用于每个页面。不必查询数据库,如下所示:

$products = DB::table("products")->get();
然后将其传递到 View 中:
return view("site.products", array(
'products' => $products,
));
我不想对每个 View 都这样做。相反,我希望默认情况下所有模板都可以使用 $products ......这样我就可以做到这一点:
@foreach ($products as $product) 
... etc
我将如何以全局方式声明它以实现这一目标?

最佳答案

推荐的这样做的方法是添加一个中间件,该中间件应用于您想要影响的所有路由。
中间件

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\View;

class GlobalVariablesMiddleware
{
$myVariable = "Value For Everyone";
View::share(['globalValue' => $myVariable]);
}
将其添加到 Http 文件夹中的 kernel.php
protected $routeMiddleware = [
...
'myMiddleware' => \App\Http\Middleware\ GlobalVariablesMiddleware::class,
];
设置完成后,您可以轻松地将其应用于单个路线或分组路线以实现您的目标
// Routes that will have the middleware    
Route::middleware(['myMiddleware'])->group(function () {

// My first route that will have the global value
Route::resource('/profile', App\Http\Controllers\ProfileController::class);

// My second route that will have the global value
Route::resource('/posts', App\Http\Controllers\PostController::class);
});
通过这样做,如果您选择不将数据全局化,您可以轻松地控制将来的数据。

关于laravel - 如何声明所有 Blade 文件可用的全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68634469/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com