Laravel刀片模板特定代码

时间:2015-05-22 11:35:46

标签: php laravel laravel-5 blade laravel-middleware

目前我们正在几个项目中使用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变量的代码,但是当包含该部件时,是否有更好的解决方案来生成一些刀片特定变量?有点像在加载刀片模板时运行控制器功能吗?

我一直在网上搜索,但似乎找不到任何有同样问题的人。希望有人可以帮助我解决这个令人心碎的问题!

1 个答案:

答案 0 :(得分:2)

您可以将此绑定添加到AppServiceProvider

(或任何您想要的自定义ServiceProvider)

像这样:

public function boot()
{
    $view->composer('parts.top_5', function($view) {
        $view->with('any_data' => 'You want');
    })
}

这样,只要Laravel组成parts.top_5视图,这个闭包方法就会被触发。

在文件中,它在这里: http://laravel.com/docs/5.0/views#view-composers