Laravel - Как отобразить результат запроса моего контроллера в заголовке раскладок - PullRequest
0 голосов
/ 25 апреля 2020

У меня в контроллере есть код 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 клиентов

route \ web. php

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

Я хочу отобразить этот код в макетах \ header. php как показано ниже.

layouts \ 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>        

Но поскольку заголовок в макете не имеет контроллера.

Как мне этого добиться?

Спасибо.

1 Ответ

0 голосов
/ 26 апреля 2020

Вы можете сделать это с помощью 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 middleware

Route::group(['middleware' => ['globaldata']], function () {
//  another routes
    Route::get('/customers', 'HomeController@customers')->name('customer-default');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...