php laravel-5 blade laravel-5.2

php - Pasar variable adicional a parcial usando @each en la hoja



laravel-5 blade (3)

Puede compartir variables desde su view()->share(''key'', ''value''); controlador view()->share(''key'', ''value''); Ese valor estará disponible en todas sus vistas.

O bien, puede crear compositores de vista exactamente para esta vista.

public function yourmethod() { view()->composer(''partials.nav.categories'', function($view) { $view->with(''var'', ''value''); }); return view(''path.to.view'', [''groupCategories'' => $categories]); }

Y $var estará disponible solo en la vista partials.nav.categories .

De la documentación, solo se pueden pasar 4 parámetros a @each . No creo que usar @include ayude. El código está debajo

@each(''partials.nav.categories'', $groupCategories, ''parent'')

Necesito enviar una variable adicional para usar en parials.nav.categories partials.nav.categories . Esta variable no está contenida dentro de la matriz $groupCategories .

¿Hay alguna forma de enviar esta variable adicional o tengo que adjuntarla a cada elemento de la matriz partials.nav.categories ?

Gracias


Solo necesita pasar a la instancia parcial, las variables que cambian en cada uso del parcial.

El código dentro del parcial en sí puede acceder a cualquier cosa que esté en el alcance del padre.

Entonces, si, por ejemplo, la vista principal puede usar $ usuario, también lo puede hacer el parcial, en el entendido de que tendrá el mismo valor en cada inclusión del parcial.

No estoy seguro si esto ayuda, ya que no dice si el parámetro adicional debe ser diferente para cada inclusión del parcial.


Creo que tienes razón. Agregar datos a $ groupCategories es el camino correcto. Según la documentación, el cuarto parámetro es lo que se mostrará si $ groupCategories está vacío. Puede pasar una plantilla de vista, que se mostrará solo una vez, o cualquier texto antepuesto con raw | se mostrará tal cual.

Formato general:

@each(''viewfile-to-render'', $data, ''variablename'',''optional-empty-viewfile'')

El primer argumento es la plantilla para renderizar. Esto generalmente será un parcial, como su nombre de yourblade.blade.php.

El segundo es el conjunto de datos iterativo, en su caso $ groupCategories.

El tercero es el nombre de la variable que los elementos usarán cuando se iteren. Por ejemplo, en foreach ($ data as $ element), este argumento sería un elemento (sin $).

El cuarto argumento es opcional: es el nombre del archivo de plantilla que se debe representar cuando el segundo argumento ($ data) está vacío, es decir, no tiene nada por lo cual iterar. Si aplicamos todo esto a nuestro caso, podemos reemplazar este bloque completo:

@if (count($groupCategories) > 0) <ul> @foreach ($groupCategories as $parent) @include(''partials.nav.categories'', $parent) @endforeach </ul> @else @include(''partials.group-none'') @endif

con

@each(''partials.nav.categories'', $groupCategories, ''parent'', ''partials.group-none'')