0

我的 Laravel-5.8 控制器中有一个代码

public function customers()
{
try { 
    $userCompany    = Auth::user()->company_id;
    $userEmployee = Auth::user()->employee_id;

    $countCustomers = Customers::where('company_id', $userCompany)->count();
    $customers = Customers::where('company_id', $userCompany)->orderBy('created_at', 'desc')->take(5)->get();
    return view('customers')
            ->with('countCustomers', $countCustomers)
            ->with('countCustomers', $countCustomers);
    } catch (Exception $exception) {
        Session::flash('error', 'Action failed! Please try again');
        return back();
        }        
}

该代码计算了客户数量并列出了前 5 位客户

路线\web.php

Route::get('/customers', 'HomeController@customers')->name('customer-default');

我想在 layouts\header.php 中呈现这段代码,如下所示。

布局\header.blade

  <li class="nav-item dropdown">
    <a class="nav-link" data-toggle="dropdown" href="#">
      <i class="far fa-bell"></i>
      <span class="badge badge-warning navbar-badge">0</span>
    </a>
    <div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
      <span class="dropdown-item dropdown-header">You have {{$countCustomers}} Customers</span>
      <div class="dropdown-divider"></div>
                    @foreach($customers as $customer)
                {
                    {{ $customer->first_name }},
                }
                @endforeach
      <div class="dropdown-divider"></div>
      <a href="#" class="dropdown-item dropdown-footer">See All Notifications</a>

    </div>
  </li>        

但是由于布局中的标题没有控制器。

我如何实现这一目标?

谢谢你。

4

1 回答 1

0

你可以通过使用来做到这一点middlware

1-创建任何名称的中间件

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\View;

class GlobalData
{
    /**
     * Handle an incoming request.
     *
     * @param \Illuminate\Http\Request $request
     * @param \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
      $userCompany    = Auth::user()->company_id;
      $userEmployee = Auth::user()->employee_id;

      $countCustomers = Customers::where('company_id', $userCompany)->count();
      $customers = Customers::where('company_id', $userCompany)->orderBy('created_at', 'desc')->take(5)->get();
        View::share('customers', $customers);
        return $next($request);
    }
}

2-注册你的中间件Kernal.php

protected $routeMiddleware = [
 .
 ...
 'globaldata' => GlobalData::class,
 ]

3-现在使用globaldata 中间件对您的路线进行分组

Route::group(['middleware' => ['globaldata']], function () {
//  another routes
    Route::get('/customers', 'HomeController@customers')->name('customer-default');
}
于 2020-04-25T21:04:29.613 回答