Laravel 5.5 : 如何定义可以在所有控制器中使用的全局变量?
Laravel 5.5 : How to define global variable that can be used in all controllers ?
您好开发人员和编码人员,
My question is How to define a global variable , that can be used in
all controllers in Laravel ?
我在 AppServiceProviders 的启动方法 中定义了一个变量 $company
- 我在所有 blade 视图中使用它,但我不能在控制器中使用它文件,它给出错误,undefined variable $company
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
View::share('key', 'value');
Schema::defaultStringLength(191);
$company=DB::table('company')->where('id',1)->first();
View::share('company',$company);
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
请指导我,感谢您的努力和时间:)
好吧,所以除非你想把它保留在你的会话中,我绝对不推荐,缓存似乎也不是一个最好的主意,或者通过框架内的配置系统设置它(已经有 3 种不同的解决方案适用于不同的问题)我将从考虑该变量将包含什么开始,如果这只是公司模型的集合那么您基本上可以通过使用 Laravel [=20 在任何控制器中使用它=] 方法。
我推荐的是 $company = Company::where('foo', 'bar')->first();
,或者只是一些数据提供者,可以 return 以 Laravel 集合的形式提供您需要的所有信息。
tl;博士
#recommended way that's reusable throughout whole app
Company::find(1); // instead of DB::table('company')->where('id', 1)->get();
希望对您有所帮助。
在运行时设置配置变量
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
View::share('key', 'value');
Schema::defaultStringLength(191);
$company=DB::table('company')->where('id',1)->first();
// View::share('company',$company);
config(['yourconfig.company' => $company]);
}
}
用法:
config('yourconfig.company');
您好开发人员和编码人员,
My question is How to define a global variable , that can be used in all controllers in Laravel ?
我在 AppServiceProviders 的启动方法 中定义了一个变量 $company
- 我在所有 blade 视图中使用它,但我不能在控制器中使用它文件,它给出错误,undefined variable $company
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
View::share('key', 'value');
Schema::defaultStringLength(191);
$company=DB::table('company')->where('id',1)->first();
View::share('company',$company);
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
请指导我,感谢您的努力和时间:)
好吧,所以除非你想把它保留在你的会话中,我绝对不推荐,缓存似乎也不是一个最好的主意,或者通过框架内的配置系统设置它(已经有 3 种不同的解决方案适用于不同的问题)我将从考虑该变量将包含什么开始,如果这只是公司模型的集合那么您基本上可以通过使用 Laravel [=20 在任何控制器中使用它=] 方法。
我推荐的是 $company = Company::where('foo', 'bar')->first();
,或者只是一些数据提供者,可以 return 以 Laravel 集合的形式提供您需要的所有信息。
tl;博士
#recommended way that's reusable throughout whole app
Company::find(1); // instead of DB::table('company')->where('id', 1)->get();
希望对您有所帮助。
在运行时设置配置变量
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
View::share('key', 'value');
Schema::defaultStringLength(191);
$company=DB::table('company')->where('id',1)->first();
// View::share('company',$company);
config(['yourconfig.company' => $company]);
}
}
用法:
config('yourconfig.company');