6

目前我们在几个项目中使用 Laravel 框架,但我们一直遇到的一个我不喜欢的问题是以下问题:

假设您有一个主页和一个内容页面

HomepageController 拥有所有 Homepage 特定的 php 代码 ContentpageController 拥有所有 Content 特定的 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。现在的问题是我们目前正在复制两个控制器或分组中间件中 top5 变量的代码,但是当包含该部件时,是否有更好的解决方案来生成一些刀片特定变量?有点像在加载刀片模板时运行控制器功能?

我一直在搜索互联网,但似乎找不到任何有相同问题的人。希望有人可以帮助我解决这个令人头疼的问题!

4

1 回答 1

2

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

于 2015-05-22T12:09:01.093 回答