如何在 Laravel 中设置全局变量?

Jaw*_*wad 5 php laravel

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

public function __construct()
{
    $cat = Categories::get()->first();
}
Run Code Online (Sandbox Code Playgroud)

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

Ift*_*din 6

如果您想$cat在任何地方访问变量,即在所有控制器和视图中,您应该按如下方式共享它:

protected $cat;

public function __construct()
{
    $this->cat = Categories::get()->first();
    View::share('site_settings', $this->cat);
}
Run Code Online (Sandbox Code Playgroud)

我假设您正在使用BaseController构造函数。现在,如果您的控制器扩展了这一点BaseController,他们就可以使用 访问该类别$this->cat

第二种方法:

您还可以尝试使用 Config 类。您需要做的就是在boot方法中添加以下代码app/Providers/AppServiceProvider.php

Config::set(['user' => ['name' => 'John Doe']]);
Run Code Online (Sandbox Code Playgroud)

然后,在项目中的任何位置,您都可以使用以下方式获取值Config::get('user.name');


小智 6

使用服务提供商

https://hdtuto.com/article/laravel-5-global-variable-in-all-views-file

应用程序/提供商/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()

    {

        //

    }

}
Run Code Online (Sandbox Code Playgroud)

在你看来

{{ $siteTitle }}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

18428 次

最近记录:

6 年,1 月 前