Laravel blade 模板特定代码

Laravel blade template specific code

目前我们在几个项目上使用 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,top 5需要一些特定的变量来输出top5。现在的问题是我们目前正在两个控制器或分组中间件中复制前 5 个变量的代码,但是是否有更好的解决方案来在包含该部分时生成一些 blade 特定变量?所以有点像 运行 加载 blade 模板的控制器功能?

我一直在网上搜索,但似乎找不到有相同问题的人。希望有人能帮助我解决这个令人费解的问题!

您可以将此绑定添加到 AppServiceProvider

(或您想要的任何自定义服务提供商)

像这样:

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