我有一些动态数据,我想从数据库中获取并将其传递给所有视图。我试图从互联网上做一些例子,但它们似乎不适用于我的情况,如
public function boot(){}
我无法进行数据库查询只传递硬编码值。 我尝试过的另一种方法是基本控制器,但视图在访问变量
时给出了错误$query = DB::table('users')->first();
\View::share('user', $query);
任何有基于BaseController的解决方案都会受到赞赏,如果我错过了什么,请提醒我
答案 0 :(得分:2)
根据https://laravel.com/docs/5.4/views#sharing-data-with-all-views的文档:
有时,您可能需要与应用程序呈现的所有视图共享一段数据。您可以使用view facade的共享方法执行此操作。通常,您应该在服务提供商的引导方法中发出共享呼叫。
再次作为该网站的一个示例,您应该将其添加到您的某个服务提供商:
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
$query = DB::table('users')->first();
\View::share('user', $query);
}
}
答案 1 :(得分:0)
您可以使用视图编辑器。 "视图组合器是在呈现视图时调用的回调或类方法。如果每次渲染视图时都希望将数据绑定到视图,则视图编写器可以帮助您将该逻辑组织到一个位置。"
上找到更多详情答案 2 :(得分:0)
它正在启动:
View :: share(' variabelname',DB table first()等等)
但是我遇到了一个问题:
如果我删除表或删除表,然后运行迁移和种子,我得到错误:
purchase price $2,000
paint $50
new tires $200
。
所以我必须在任何迁移刷新等之前从App Service Provider注释掉该行。