2016-05-24 14 views
1

Ich verwende die @each Blade-Direktive, um ein Array von Abfrageergebnissen durchzuschleifen und zu rendern (in diesem Fall ist die @ each-Anweisung eher eine bessere Idee als eine foreach Schleife, da der HTML-Code, der ausgegeben wird, abhängig vom Ergebnis der Abfrage geändert wird. Das alles funktioniert gut, aber ich habe das Problem zu versuchen, den aktuellen Index der Abfrage selbst zu bekommen.Laravel - @each aktuelle Iteration

Mit anderen Worten, mit der Anweisung @each muss ich in der Lage sein, auf den Schlüssel (oder Index) der aktuellen Schleife in dem Teil zuzugreifen, der gerendert wird.

Wenn Sie etwas haben, was Sie wissen müssen, fragen Sie einfach.

Vielen Dank für das Lesen!

Antwort

3

auf den Quellcode der Suche, die für die @each Richtlinie laufen gelassen ergibt sich folgendes:

Illuminate \ View \ Factory.php

/** 
* Get the rendered contents of a partial from a loop. 
* 
* @param string $view 
* @param array $data 
* @param string $iterator 
* @param string $empty 
* @return string 
*/ 
public function renderEach($view, $data, $iterator, $empty = 'raw|') 
{ 
    $result = ''; 

    // If is actually data in the array, we will loop through the data and append 
    // an instance of the partial view to the final result HTML passing in the 
    // iterated value of this data array, allowing the views to access them. 
    if (count($data) > 0) { 
     foreach ($data as $key => $value) { 
      $data = ['key' => $key, $iterator => $value]; 

      $result .= $this->make($view, $data)->render(); 
     } 
    } 

    // If there is no data in the array, we will render the contents of the empty 
    // view. Alternatively, the "empty view" could be a raw string that begins 
    // with "raw|" for convenience and to let this know that it is a string. 
    else { 
     if (Str::startsWith($empty, 'raw|')) { 
      $result = substr($empty, 4); 
     } else { 
      $result = $this->make($empty)->render(); 
     } 
    } 

    return $result; 
} 

Wenn Sie auf diesen Linien bemerken:

$data = ['key' => $key, $iterator => $value]; 

$result .= $this->make($view, $data)->render(); 

Eine Variable namens $key wird automatisch an die gerenderte Ansicht übergeben. Das sollte den aktuellen Index Ihrer Array-Schleife enthalten.

+0

Vielen Dank für Ihre Hilfe. – mattrick

Verwandte Themen