Laravel-如何在没有额外请求的情况下将缓存的值传递给多个视图?

具有从缓存中检索的多个数据集合,需要将其传递到几个不同的视图。 为了优化性能,只需要检索一次即可,无需额外的缓存请求。

因此不能使用ViewComposer -它会为每个列出的视图触发缓存请求。

在AppServiceProvider中使用以下解决方案:

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        view()->share('somedata',Cache::get('somekey')); 
    }

但是在这种情况下,数据传递到了所有视图,从内存消耗的角度来看,这是不好的。 需要仅将数据传递到某些视图的能力。 (不是页面,因为几乎每个页面都使用这些视图) 如下所示: view(['viewname1','viewname2'])-> share('somedata',Cache :: get('somekey'));

gba30000 回答:Laravel-如何在没有额外请求的情况下将缓存的值传递给多个视图?

您可以使用View Composer。以下示例摘自文档。

在您的AppServiceProvider中注册视图编辑器,并指定应附加的路由;

View::composer(
    ['profile','dashboard'],// the routes you want to share it with
    'App\Http\View\Composers\MyViewComposer' // your registered view composer
);

在View Composer中,获取缓存的变量并将其传递给视图;

public function compose(View $view)
{
    $someData = Cache::get('somekey');

    $view->with($someData);
}
本文链接:https://www.f2er.com/3081671.html

大家都在问