在laravel中返回许多视图的值

时间:2018-07-15 19:00:14

标签: php laravel laravel-5

我有一个非常简单的问题,它是关于如何在laravel中向多个视图返回值,或者只是将其设为全局值,以便可以在许多视图中使用它。 我将进一步说明,我在消息控制器中具有一个函数,该函数将数据库中的消息呈现到名为 message.blade.php

的视图页面中
public function index(){
  $listmsg = Message::where('idReceiver', Auth::id())->orderBy('idMess','desc')->get();

  return view('message', ['messages' => $listmsg]);
}

在我的主页(app.blade.php)上,我有一个菜单,在此菜单中,我想显示未读消息的数量,即使我知道这是不可能的,我也尝试过这样做,因为我的函数返回了< strong> message.blade.php

@if(!$messages->isEmpty())
<span class="badge badge-danger badge-pill">
    {{ $messages->count() }}
</span>
@endif

请注意, message.blade.php 扩展了母版页。 谢谢。

1 个答案:

答案 0 :(得分:2)

创建 View Composer 并通过它传递数据。

Laravel 5

namespace App\Providers;

use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider
{

public function boot()
{
    // Using class based composers...
    View::composer(
        'profile', 'App\Http\ViewComposers\ProfileComposer'
    );

    // Using Closure based composers...
    View::composer('dashboard', function ($view) {
        //
    });

    // Passing multiple data to multiple views
    View::composer(['view1','view2','multipleviews.*'], function ($view) {

        $data1 = [];
        $var2 = 'string';

        $view->with(compact('data1','var2'));

    });
}
}

或者您可以使用助手

public function boot()
{
    view()->share('key', 'value');
}