Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel控制器中的全局变量_Php_Laravel_Global Variables - Fatal编程技术网

Php laravel控制器中的全局变量

Php laravel控制器中的全局变量,php,laravel,global-variables,Php,Laravel,Global Variables,我希望$year变量在我的页面控制器的所有功能中都可用。我试过这个代码,但没有成功 类页面控制器扩展控制器 { 公共函数构造() { $dt=Carbon::parse(); $year=$dt->year; } 公共职能指数() { 返回视图('pages.index'); } 关于()的公共功能 { 返回视图('pages.about',压缩('year'); } 公共函数create() { 返回视图('page.create',压缩视图('year'); } } 试试这个: //give

我希望
$year
变量在我的
页面控制器的所有功能中都可用。我试过这个代码,但没有成功

类页面控制器扩展控制器
{
公共函数构造()
{
$dt=Carbon::parse();
$year=$dt->year;
}
公共职能指数()
{
返回视图('pages.index');
}
关于()的公共功能
{
返回视图('pages.about',压缩('year');
}
公共函数create()
{
返回视图('page.create',压缩视图('year');
}
}
试试这个:

//give private declaration
private $year;
public function __construct()
{
    $dt = Carbon::parse();
    $this->year = $dt->year;
}

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

public function about()
{
    $year = $this->year;
    return view('pages.about',compact('year') );
}

public function create()
{
     $year = $this->year;
    return view('pages.create',compact('year') );
}

您可以在App::before事件中创建全局单例

App::before(function($request) {
    App::singleton('customYear', function(){
        $dt = Carbon::parse();
        $customYear = $dt->year;
        return $customYear;
    });

    // If you use this line of code then it'll be available in any view
    View::share('customYear', app('customYear'));

    //To get the same data in any controller you may use:
    $customYear = app('customYear');
});

1。选项:使用AppServiceProvider

在这种情况下,所有视图都可以使用$year

<?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()
    {
        //
    }
}
3。使用刀片

在需要这一年的视图中,您可以注入如下碳实例:

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

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

你好,我是拉拉维尔的新朋友。如何使用第一个选项。我是否需要在pagesController.php中声明一些东西,因为我得到了一个错误“Undefined variable:year”。P.S im使用laravel 5如果您已将代码添加到
AppServiceProvider
中,如前所述,则无需执行其他操作。抛出这个错误是什么?我使用这个。。公共函数about(){return$year;},错误为未定义变量:year。我复制并粘贴了您的代码。要使其生效,您不能只返回变量
$year
,因为它与视图共享。您需要从函数返回一个视图:
返回视图('pages.about')
,然后您可以从刀片模板中访问
$year
,如下所示:
{$year}}
yap这是正确的,我需要在所有视图上传递年份。感谢您的帮助,我尝试了这个
private$year和函数中的
$year=$this->year;返回视图('pages.about',压缩('year')
但在视图中它返回
null
?以下是我所做的
private$superSupplier
公共函数uu construct(){pointedSupplier=Supplier::where('id',Auth::guard('Supplier')->id())->with('Supplier\u role')->first();}$this->superSupplier=$pointedSupplier->Supplier\u role->super\u super返回空值
@inject('carbon', 'Carbon\Carbon')

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