Nix*_*x27 11 php global-variables laravel
我希望$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'));
}
}
Run Code Online (Sandbox Code Playgroud)
Tim*_*Tim 21
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()
{
//
}
}
Run Code Online (Sandbox Code Playgroud)
2.选项:使用View Composer
在这种情况下,变量仅适用于您需要的视图.
不要忘记添加新创建的提供程序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()
{
//
}
}
Run Code Online (Sandbox Code Playgroud)
3.使用Blades @ inject-method
在需要年份的视图中,您可以注入这样的Carbon实例:
@inject('carbon', 'Carbon\Carbon')
{{ $carbon->parse()->year }}
Run Code Online (Sandbox Code Playgroud)
试试这个:
//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') );
}
Run Code Online (Sandbox Code Playgroud)
您可以在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');
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23543 次 |
| 最近记录: |