Rem*_*oDN 6 php laravel blade laravel-5 laravel-middleware
目前我们在几个项目中使用Laravel框架,但我们不断喜欢的一个问题是以下问题:
假设您有一个主页和一个内容页面
HomepageController具有所有主页特定的PHP代码ContentpageController具有所有内容特定的PHP代码
我们有一个app.blade.php
@yield('page')
Run Code Online (Sandbox Code Playgroud)
HomepageController调用包含的视图homepage.blade.php
@extends('app')
@section('page')
Some HTML part
@include('parts.top_5')
@endsection
Run Code Online (Sandbox Code Playgroud)
ContentController调用包含的视图content.blade.php
@extends('app')
@section('page')
Some different HTML part
@include('parts.top_5')
@endsection
Run Code Online (Sandbox Code Playgroud)
在这里你可以看到两个页面都包含parts.top_5,前5个需要一些特定的变量才能输出top5.现在问题是我们正在复制两个控制器或分组中间件中top5变量的代码,但是当包含该部件时,是否有更好的解决方案来生成一些刀片特定变量?有点像加载刀片模板时运行控制器功能?
我一直在网上搜索,但似乎找不到任何有相同问题的人.希望有人可以帮助我解决这个令人心碎的问题!
您可以将此绑定添加到 AppServiceProvider
(或您想要的任何自定义服务提供商)
像这样:
public function boot()
{
$view->composer('parts.top_5', function($view) {
$view->with('any_data' => 'You want');
})
}
Run Code Online (Sandbox Code Playgroud)
这样,每当 Laravel 组合parts.top_5视图时,都会触发此闭包方法。
在文档中,它位于: http ://laravel.com/docs/5.0/views#view-composers