vistas usar template plantillas plantilla para gratis ejemplo descargar crear bootstrap php templates laravel-4 blade template-inheritance

php - template - usar blade sin laravel



Laravel 4-Extender una sección declarada en una plantilla maestra más de una vez (1)

En primer lugar, cuando extiende un diseño en una vista, comienza una sección y luego "detener". Me gusta esto:

@section(''header'') @parent {{ HTML::script(''js/anotherjs.js'') }} @stop

¿Cómo estás ampliando los diseños? No estoy seguro de si tiene varios diseños que se extienden entre sí y luego se amplían mediante vistas o si tiene varias vistas, cada una de las cuales extiende este diseño en particular. Ahora, en caso posterior, una vista no tendrá ningún efecto en la otra vista.

Si está utilizando el enfoque anterior, sería útil algún otro código de ejemplo, ya que creo que ya terminó de escribir los valores en algún momento.

Espero eso ayude.

EDITAR

cuando tu dices:

<header> @yield(''header_bar'') @yield(''nav_bar'') @yield(''search_bar'') </header>

Está haciendo marcadores de posición con tres nombres diferentes. Así que nav_bar, search_bar no son vistas secundarias, pero son marcadores de posición que se pueden llenar a partir de tus vistas.

Déjame ponerlo de otra manera. Cuando sus puntos de vista extienden una plantilla, rellenarán los espacios declarados en la plantilla. Por lo tanto, cada uno de los ''encabezados'', ''barra de búsqueda'', etc. son espacios que deben rellenarse UNA VEZ . Entonces, si tiene una vista llamada index.blade.php, puede completarla una vez. Entonces puedes tener index.blade.php así:

@section(''header'') @parent {{ HTML::script(''js/anotherjs.js'') }} @stop @section(''header_bar'') @parent {{ HTML::script(''js/yetanotherjs.js'') }} @stop @section(''nav_bar'') @parent {{ HTML::script(''js/foojs.js'') }} @stop @section(''search_bar'') @parent {{ HTML::script(''js/foojs.js'') }} @stop

Ahora, si miramos esto, lo que resultará es:

<!DOCTYPE html> <html> <head> @section(''header'') {{ HTML::style(''css/planesaleing.css'') }} {{ HTML::script(''js/jquery-1.10.1.js'') }} {{ HTML::script(''js/search_Bar.js'') }}//from parent till this point {{ HTML::script(''js/anotherjs.js'') }} //comes from view @show </head> <body> <div class="planesaleing_page"> <header> {{ HTML::script(''js/yetanotherjs.js'') }} //comes in place of header_bar as nothing in parent //@yield(''header_bar'') {{ HTML::script(''js/foojs.js'') }}//comes in place of nav_bar as nothing in parent //@yield(''nav_bar'') {{ HTML::script(''js/foojs.js'') }}//comes in place for search_bar as nothing in parent //@yield(''search_bar'') </header> <div class="main_page"> // Some more code </div> @yield(''footer'') </div> </body> </html>

Es por eso que solo el primero parece extender el maestro. Creo que deberías reconsiderar la forma en que intentas extender el maestro.

Lo que puede funcionar para usted es

@include(''view.name'') // includes a subview

Sin embargo, no estoy seguro de si las secciones se dividirán en cascada desde cada subvista o no. Puedes probar esto.

Por lo tanto, tendrá una vista llamada index.blade.php que se parece más o menos a:

@extends(''master'') @include(''search_bar'') @include(''nav_bar'') @include(''foo_bar'')

y luego tendrá archivos separados como search_bar.blade.php y otros que ampliarán el maestro y completarán los marcadores de posición de esta manera:

@extends(''master'') @section(''header'') @parent {{ HTML::script(''js/anotherjs.js'') }} @stop

Creo (no ha probado) que esto debería hacer su trabajo. A continuación, puede poner en cascada las entradas de todas las subvistas y armarlas como desee. De modo que todas las subvistas llenarán la sección del encabezado y esto se debe conectar en cascada en el resultado final. Pruébalo y si funciona, ¡EXCELENTE! de lo contrario, pruebe un enfoque diferente para inyectar los scripts.

Tengo un escenario donde tengo una plantilla maestra que define una sección de encabezado. Se parece a esto...

<!DOCTYPE html> <html> <head> @section(''header'') {{ HTML::style(''css/planesaleing.css'') }} {{ HTML::script(''js/jquery-1.10.1.js'') }} {{ HTML::script(''js/search_Bar.js'') }} @show </head> <body> <div class="planesaleing_page"> <header> @yield(''header_bar'') @yield(''nav_bar'') @yield(''search_bar'') </header> <div class="main_page"> // Some more code </div> @yield(''footer'') </div> </body> </html>

Como puede ver, tengo varias vistas secundarias (por ejemplo, nav_bar y search_bar). Cada una de estas vistas secundarias tiene un archivo .js adjunto. Así que me gustaría extender la sección ''encabezado'' en la barra de navegación de esta manera ...

@section(''header'') @parent {{ HTML::script(''js/anotherjs.js'') }} @stop

y luego de nuevo en la barra de búsqueda de esta manera:

@section(''header'') @parent {{ HTML::script(''js/yetanotherjs.js'') }} @stop

La intención es que el archivo html resultante salga así:

@section (''header'') {{HTML :: style (''css / planesaleing.css'')}} {{HTML :: script (''js / jquery-1.10.1.js'')}} {{HTML :: script (''js / search_Bar.js'')}} {{HTML :: script (''js / anotherjs.js'')}} {{HTML :: script (''js / yetanotherjs.js'')}} @show

Sin embargo, solo el primero realmente extiende el encabezado, todos los demás después de esto son aparentemente ignorados. ¿Hay alguna forma de usar extensiones múltiples?

Cualquier consejo, muy apreciado.