全局变量在laravel控制器中 [英] Global variable in laravel controller

查看:258
本文介绍了全局变量在laravel控制器中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望 $ year 变量在我的 PagesController 的所有函数中可用。我试过这段代码,但我没有成功。

I want the $year variable to be available in all functions of my PagesController. I tried this code but I didn't succeed.

class PagesController extends Controller
{
    public function __construct()
    {
        $dt = Carbon::parse();
        $year = $dt->year;
    }

    public function index()
    {
        return view('pages.index');
    }

    public function about()
    {
        return view('pages.about', compact('year'));
    }

    public function create()
    {
        return view('pages.create', compact('year'));
    }
}


推荐答案

<强> 1。选项:使用AppServiceProvider

在这种情况下,$ year可用于所有视图!

In this case $year is available to ALL views!

<?php

namespace App\Providers;

use Carbon;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        view()->share('year', Carbon::parse()->year);
    }

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

2。选项:使用 View Composer

2. Option: Use a View Composer

在这种情况下,该变量仅适用于您需要的视图。

In this case, the variable is only available to the views where you need it.

不要忘记添加新创建的提供程序至 config / app.php

Don't forget to add the newly created provider to config/app.php!

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Carbon;

class ComposerServiceProvider extends ServiceProvider
{
    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function boot()
    {
        // Using Closure based composers...
        view()->composer('pages.*', function ($view) {
            $view->with('year', Carbon::parse()->year);
        });
    }

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

3。使用刀片 @ inject-method

3. Use Blades @inject-method

在需要一年的视图中,您可以像这样注入一个Carbon实例:

Within the views that need the year you could inject a Carbon instance like this:

@inject('carbon', 'Carbon\Carbon')

{{ $carbon->parse()->year }}

这篇关于全局变量在laravel控制器中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆