1. Option: Use the AppServiceProvider
In this case $year is available to ALL views!
<?php
namespace AppProviders;
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 View Composer
In this case, the variable is only available to the views where you need it.
Don't forget to add the newly created provider to config/app.php
!
<?php
namespace AppProviders;
use IlluminateSupportServiceProvider;
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 @inject-method
Within the views that need the year you could inject a Carbon instance like this:
@inject('carbon', 'CarbonCarbon')
{{ $carbon->parse()->year }}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…