我希望$year变量在PagesController的所有函数中都可用.我试过这个密码,但没有成功.

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. Option: Use the 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()
    {
        //
    }
}

2. Option: Use a 100

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

不要忘记将新创建的提供者添加到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. Use Blades 100

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

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

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

Laravel相关问答推荐

如何重置laravel ui密码

哈希:check()不返回预期结果Laravel 10

为什么使用 created_at 表在迁移错误中创建表?

Laravel 5 Eloquent 范围连接并 Select 特定列

在 laravel 中动态更改时区

Carbon(laravel)处理无效日期

允许的内存大小 134217728 字节用尽(试图分配 20480 字节) Laravel

如何在 laravel 中使用 str_replace

Laravel 5 - ErrorException 无法打开流:权限被拒绝

Laravel transformer vs resource

路由模型绑定不起作用

从 sqlite DB 登录 Laravel,得到PDOException 找不到驱动程序

laravel 5中的配置缓存导致找不到视图

使用 vue-router 更改路由时中止所有 Axios 请求

为什么在 Laravel 的 DB::select 中使用 DB::raw?

Laravel 无法创建根目录

laravel 5.1 在没有 VM 重启的情况下看不到作业(job)文件的更改

Laravel 邮件密件抄送

Carbon解析到 ISO8601

为什么 phpunit 没有得到 phpunit.xml 中指定的正确 APP_ENV?