如何在Laravel中设置Global变量?

时间:2019-01-20 07:07:01

标签: php laravel

我试图在Laravel中设置一个全局变量,我在__construct()函数中设置,但是不能在控制器外部使用它。 我应该在哪里设置该变量?

public function __construct()
{
    $cat = Categories::get()->first();
}

但是在某些页面中我无法访问$cat变量。

3 个答案:

答案 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 }}