如何在 Laravel 中设置全局变量(不搞乱迁移)?
How to Set Global Variable in Laravel (Without Messing up with Migrations)?
我只想从我的数据库 options
table 中获取网站的标题和标语。
我尝试从 AppServiceProvider.php
获取它,但是当我删除所有 table 和 运行 PHP artisan migrate
.[=23= 时,它显示 table 不存在的错误]
我也试过 Session 但最后,它把我带到了旧的 AppServiceProvider.php
方法。它工作正常,但当我们全新安装应用程序并 运行 迁移时却不行!
这就是我的 AppServiceProvider.php
看起来想知道我到底想做什么的方式。
public function boot()
{
$site_options = array();
$site_title = Options::where('option_name','site_title')->first();
$site_options['site_title'] = $site_title?$site_title->option_value:'Site Title';
$site_tagline = Options::where('option_name','site_tagline')->first();
$site_options['site_tagline'] = $site_tagline?$site_tagline->option_value:'A Simple website!';
view()->share('site_options',$site_options);
}
我正在 Whosebug 和其他地方寻找答案,但我不知道该怎么做。我还可以在所有控制器上创建构造函数并获取数据,但是我必须在每个视图中传递变量,这会使代码看起来很糟糕!
对此有任何标准解决方案吗?
PS:当我将此代码添加到 AppServiceProvider.php
时,播种不起作用,迁移也不起作用。我必须从 AppServiceProvider.php
中删除此代码才能迁移和播种!
你能在上面使用 try catch 吗?
try {
$site_title = Options::where('option_name','site_title')->first();
$site_options['site_title'] = $site_title->option_value;
} catch (\Exception $e) {
$site_options['site_title'] = 'Site Title';
}
我只想从我的数据库 options
table 中获取网站的标题和标语。
我尝试从 AppServiceProvider.php
获取它,但是当我删除所有 table 和 运行 PHP artisan migrate
.[=23= 时,它显示 table 不存在的错误]
我也试过 Session 但最后,它把我带到了旧的 AppServiceProvider.php
方法。它工作正常,但当我们全新安装应用程序并 运行 迁移时却不行!
这就是我的 AppServiceProvider.php
看起来想知道我到底想做什么的方式。
public function boot()
{
$site_options = array();
$site_title = Options::where('option_name','site_title')->first();
$site_options['site_title'] = $site_title?$site_title->option_value:'Site Title';
$site_tagline = Options::where('option_name','site_tagline')->first();
$site_options['site_tagline'] = $site_tagline?$site_tagline->option_value:'A Simple website!';
view()->share('site_options',$site_options);
}
我正在 Whosebug 和其他地方寻找答案,但我不知道该怎么做。我还可以在所有控制器上创建构造函数并获取数据,但是我必须在每个视图中传递变量,这会使代码看起来很糟糕!
对此有任何标准解决方案吗?
PS:当我将此代码添加到 AppServiceProvider.php
时,播种不起作用,迁移也不起作用。我必须从 AppServiceProvider.php
中删除此代码才能迁移和播种!
你能在上面使用 try catch 吗?
try {
$site_title = Options::where('option_name','site_title')->first();
$site_options['site_title'] = $site_title->option_value;
} catch (\Exception $e) {
$site_options['site_title'] = 'Site Title';
}