我试图在Laravel中设置一个全局变量,我在__construct()
函数中设置,但是不能在控制器外部使用它。
我应该在哪里设置该变量?
public function __construct()
{
$cat = Categories::get()->first();
}
但是在某些页面中我无法访问$cat
变量。
答案 0 :(得分:2)
如果您想在所有位置(即所有控制器和视图中)访问#variables to store info available in /etc/network/interfaces file
address_value = '<no-value>'
netmask_value = '<no-value>'
gateway_value = '<no-value>'
dns_value = '<no-value>'
with open("/Users/yossi.s/Desktop/interfaces.txt", "r+") as file:
file_content = file.readlines()
#read data from /etc/network/interfaces and store in variables
for line in file_content:
if line.startswith("address"):
address_value = line.strip()
elif line.startswith("netmask"):
netmask_value = line.strip()
elif line.startswith("gateway"):
gateway_value = line.strip()
elif line.startswith("dns-nameservers"):
dns_value = line.strip()
address = vaildIP ('Address[current value is {val}]:'.format(val=address_value))
netmask = vaildIP('Netmask[current value is {val}]:'.format(val=netmask_value))
gateway = vaildIP('Gateway[current value is {val}]:'.format(val=gateway_value))
print "[Network Interface] Please provide the DNS servers to use (one or more, separated with spaces), \n or press Enter `enter code here`to use the existing value."
dns = raw_input('DNS servers [current value is {val}]:'.format(val=dns_value)) or "8.8.8.8"
变量,则应按以下方式共享它:
$cat
我将假定您正在使用protected $cat;
public function __construct()
{
$this->cat = Categories::get()->first();
View::share('site_settings', $this->cat);
}
构造函数。现在,如果您的控制器扩展了此BaseController
,则他们可以使用BaseController
来访问类别。
第二种方法:
您也可以尝试使用Config类。您所需要做的就是在$this->cat
boot
方法中添加以下代码
app/Providers/AppServiceProvider.php
然后您可以在项目中的任何位置使用Config::set(['user' => ['name' => 'John Doe']]);
答案 1 :(得分:1)
您也可以使用如下所示的解决方案:
App::before(function($request) {
App::singleton('cat', function(){
return Categories::get()->first();
});
});
现在可以使用下面的代码在控制器中获取数据;
$cat = app('cat');
您可以使用以下行在视图中传递数据:
view('home', compact('cat'));
答案 2 :(得分:0)
使用服务提供商
https://hdtuto.com/article/laravel-5-global-variable-in-all-views-file
app / Providers / AppServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->share('siteTitle', 'HDTuto.com');
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
并在您看来
{{ $siteTitle }}