Ich habe eine Funktion zum Zählen von Daten und möchte sie auf der Blade-Vorlage anzeigen. aber ich habe ein Problem . Diese Variable funktioniert nur in einer Ansicht und nicht in einer anderen Ansicht, da ich diese Variable NICHT in einer anderen Ansicht analysiere. Wie kann ich diese Variablenanzahl auf alle Ansichten einstellen?

Dies ist ein Illustrationsskript:

 public function inventaris_baru()
{

    $user_id = null;
    $unit        = User::where('roles_id' , 1)->pluck('nama_unit', 'id'); 


    $alat    = Alat::with('users')
    ->where('jenis' ,'Alkes')
    ->where('is_active',  'false')
    ->orderBy('created_at', 'desc')->get();

    $count = $alat->count();

    return view('sarpras.inventaris_baru',['unit' => $unit, 'user_id' => $user_id ,'alat' => $alat ,'count' => $count]);
}

Auf dieser Klinge im Layout

 <li class="nav-item">
                <a href="{{route('inventaris_baru')}}" class="nav-link">
                  <i class="far fa-circle nav-icon"></i>
                  <p>Inventaris Baru <span class="badge badge-danger right"> {{$count}} </span></p>
                </a>
              </li>

Diese $ count funktioniert nur in der Ansicht sarpras.inventaris_baru . Wie kann ich global festlegen und dies in den Layouts analysieren?

Kann mir jemand den besten Weg dazu geben?

0
Adhik Mulat 24 Feb. 2020 im 05:53

4 Antworten

Beste Antwort

Sie müssen es in einer Sitzung speichern und auf alle Ansichten zugreifen können. wie dieser

public function inventaris_baru()
{

    $user_id = null;
    $unit        = User::where('roles_id' , 1)->pluck('nama_unit', 'id'); 


    $alat    = Alat::with('users')
    ->where('jenis' ,'Alkes')
    ->where('is_active',  'false')
    ->orderBy('created_at', 'desc')->get();

    $count = $alat->count();
    session(['count' =>  $count]);

    return view('sarpras.inventaris_baru',['unit' => $unit, 'user_id' => $user_id ,'alat' => $alat ,'count' => $count]);
}

Greifen Sie wie folgt auf Ihre Ansichten zu

<li class="nav-item">
       <a href="{{route('inventaris_baru')}}" class="nav-link">
           <i class="far fa-circle nav-icon"></i>
           <p>Inventaris Baru <span class="badge badge-danger right"> {{session('count')}} </span></p>
        </a>
</li>
0
Qonvex620 24 Feb. 2020 im 03:24

Es gibt viele Möglichkeiten, dies zu tun, aber ich persönlich würde eine Middleware erstellen, die dies erledigt Zählen Sie und setzen Sie das Ergebnis in die Sitzung.

Bearbeiten:

Ein Beispiel für Ihren Fall wäre:

  1. Erstellen Sie Middleware mit dem Befehl php artisan make:middleware CalculateInventarisBaruCount
  2. Fügen Sie in der Handle-Funktion der neuen Middleware Ihre Zähllogik hinzu und fügen Sie dann vor return $next($request) session()->put('inventoris_baru_count',$count) hinzu.
  3. Registrieren Sie Ihre Middleware, indem Sie \App\Http\Middleware\CalculateInventarisBaruCount::class zum $middleware Array in Ihrem Kernel hinzufügen (ich glaube, der Standardspeicherort sollte app\Http\Kernel.php sein)
  4. Verwenden Sie die Anzahl in Ihrem Layout mit {{session('inventoris_baru_count',-1)}}. Ich habe -1 als Standardwert hinzugefügt, damit Sie wissen, ob etwas schief geht.
0
Helioarch 24 Feb. 2020 im 03:49

Sie können eine Hilfsdatei erstellen

Erstellen Sie eine Funktion, die Sie global aufrufen können.

if (! function_exists('yourCount')) {
    function yourCount()
    {
         $alat = Alat::with('users')
            ->where('jenis' ,'Alkes')
            ->where('is_active',  'false')
            ->orderBy('created_at', 'desc')->get();

         return $alat->count();
    }
}

In deiner Klinge:

 <p>Inventaris Baru <span class="badge badge-danger right"> {{ yourCount() }} </span></p>

Lesen Sie hier, um Ihre Hilfedatei einzurichten.

0
Poldo 24 Feb. 2020 im 03:25

Sie müssen Laravel View Composer verwenden. Ich hoffe, dieser Link wird Ihnen helfen - https: / /scotch.io/tutorials/sharing-data-between-views-using-laravel-view-composers

0
Iyathurai Iyngaran 24 Feb. 2020 im 03:17