Laravel刀片模板特定代码

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

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

D. *_*ski 2

您可以将此绑定添加到 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