2015-04-15 6 views
2

В Laravel 5 Я создаю небольшое обходное решение для шаблона.Laravel 5 - многократное использование шаблона

В этом шаблоне есть виджеты, и я хочу создать шаблон этого виджета, а затем предоставить ему контент и заголовок.

Я пытался что-то вроде этого:

@section('widget-title', 'sdf') 
@include('admin.core.widget') 
@section('widget-title', 'sdfff') 
@include('admin.core.widget') 

Но это не помогло.

+1

«* Но это не помогло *« Не говорит нам много ... Вы получаете сообщение об ошибке? Что не работает? Вы должны быть более наглядными; предоставлять сообщения об ошибках, ожидаемый результат и т. д. –

ответ

1

Вы можете передать второй аргумент @include(), который содержит любые данные, которые вы хотите отправить на просмотр, как указано в blade documentation.

@include('admin.core.widget', ['widget-title' => 'sdf']) 
@include('admin.core.widget', ['widget-title' => 'sdfff']) 

Вы можете получить доступ к данным в окне просмотра с помощью $widget-title.

Вы также можете передать более одной переменной с точки зрения, как это:

@include('admin.core.widget', [ 
    'widget-title' => 'sdf', 
    'widget-content' => 'lorem ipsum...' 
]) 

Если вы хотите включить переменные внутри вашей $widget-content переменной можно использовать стандартный встроенный PHP:

<?php $content = 'lorem ipsum ' . $extra-content . ' dolor...'; ?> 

@include('admin.core.widget', [ 
    'widget-title' => 'sdf', 
    'widget-content' => $content 
]) 

Упование это помогает

+0

Является ли это решение для работы с u? Для меня это не работает. –

+0

Что не работает? Есть ошибка или что? – ntzm

+0

Нет, название просто не отображается. –

0

Просто используйте @overwrite вместо @endsection или @stop.

Предположим, у вас есть widget.blade.php с вашей основной раскладки, как:

<h2> 
    @yield('widget-title') 
</h2> 
@yield('widget-content') 

и давайте несколько виджетов, как widget-one.blade.php, widget-two.blade.php ...

@extends('widget') 

@section('widget-title') 
    Some title 
@overwrite 

@section('widget-content') 
    Some content 
@overwrite 

Теперь вы можете @include('widget-one').