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