首页 > 后端开发 > php教程 > 如何在 Laravel 5 中的所有视图之间共享数据?

如何在 Laravel 5 中的所有视图之间共享数据?

Patricia Arquette
发布: 2024-12-01 02:36:08
原创
728 人浏览过

How Can I Share Data Across All Views in Laravel 5?

Laravel 5 中向所有视图传递数据

在 Laravel 5 中,可以通过多种方式实现所有视图之间的数据共享。

方法一:使用BaseController

创建一个扩展 Laravel 控制器的 BaseController 类。

class BaseController extends Controller
{
    public function __construct()
    {
        $data = [1, 2, 3];
        View::share('data', $data);
    }
}
登录后复制

所有其他控制器都应该从 BaseController 扩展:

class SomeController extends BaseController {
    // ...
}
登录后复制

方法2:使用过滤器

创建过滤器app/filters.php 或在单独的过滤器类文件中:

App::before(function($request) {
    View::share('data', [1, 2, 3]);
});
登录后复制

或者,定义自定义过滤器:

Route::filter('data-filter', function() {
    View::share('data', [1, 2, 3]);
});
登录后复制

使用 Route::filter( 将过滤器应用于特定路由).

方法三:使用中间件

使用中间件将数据传递到视图:

Route::group(['middleware' => 'SomeMiddleware'], function() {
    // Routes
});

class SomeMiddleware
{
    public function handle($request)
    {
        View::share('data', [1, 2, 3]);
    }
}
登录后复制

方法 4:使用 View Composer

使用 View 将数据绑定到视图作曲家。这允许您将数据绑定到特定视图或所有视图。

要将数据绑定到特定视图,请创建一个 ViewComposer 类并将其注册到服务提供者中:

// ViewComposer
use Illuminate\Contracts\View\View;

class DataComposer
{
    public function compose(View $view)
    {
        $view->with('data', [1, 2, 3]);
    }
}

// Service Provider
public function boot() {
    view()->composer('view-name', 'DataComposer');
}
登录后复制

要绑定数据到所有视图,在服务中使用以下代码提供者:

view()->composer('*', 'DataComposer');
登录后复制

参考:

  • [Laravel 文档](https://laravel.com/docs/5.7/views#sharing-data -所有视图)
  • [Laracast剧集](https://laracasts.com/learn/laravel/eloquent/making-models)

以上是如何在 Laravel 5 中的所有视图之间共享数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板