如何使用Laravel 4在默认主布局中包含视图


How to include a view inside a default master layout using Laravel 4?

我已经学习Laravel 4几天了,我仍然不知道如何在另一个视图或布局中插入部分视图。在Laravel的官方文档中,他们谈到在控制器上使用"子视图",使用以下代码:

$view=view::make('reeting')->nest('child','child.view',$data);

但我想做的是将局部视图直接插入到我的"mastaer布局"中。最好用代码来解释。

我在views/template/messages.blade.php:中找到了这个带有"messagesdiv"的局部视图

@section('messages')
    <div id="message">
        @if (isset($errors) && !$errors->isEmpty())
            <!-- Error or fatal messages -->
            <div class="panel panel-danger">
                <div class="panel-heading">{{ Lang::choice('error.message.title', $errors->count()) }}</div>
                <div class="panel-body">
                    <ul class="list-group">
                        @foreach($errors->getMessages() as $errorMessage)
                            <li class="list-group-item">{{ $errorMessage }}</li>
                        @endforeach
                    </ul>
                </div>
            </div>
        @elseif (isset($warnings) && !$warnings->isEmpty())
            <!-- Warning messages -->
            <div class="panel panel-warning">
                <div class="panel-heading">{{ Lang::choice('warn.message.title', $warnings->count()) }}</div>
                <div class="panel-body">
                    <ul class="list-group">
                        @foreach($warnings->getMessages() as $warnMessage)
                            <li class="list-group-item">{{ $warnMessage }}</li>
                        @endforeach
                    </ul>
                </div>
            </div>
        @elseif (isset($successes) && !$successes->isEmpty())
            <!-- Successes messages -->
            <div class="panel panel-success">
                <div class="panel-heading">{{ Lang::choice('success.message.title', $successes->count()) }}</div>
                <div class="panel-body">
                    <ul class="list-group">
                        @foreach($successes->getMessages() as $successMessage)
                            <li class="list-group-item">{{ $successMessage }}</li>
                        @endforeach
                    </ul>
                </div>
            </div>
        @elseif (isset($infos) && !$infos->isEmpty())
            <!-- Informations messages -->
            <div class="panel panel-info">
                <div class="panel-heading">{{ Lang::choice('info.message.title', $infos->count()) }}</div>
                <div class="panel-body">
                    <ul class="list-group">
                        @foreach($infos->getMessages() as $infoMessage)
                            <li class="list-group-item">{{ $infoMessage }}</li>
                        @endforeach
                    </ul>
                </div>
            </div>
        @else
            <!-- Default / no format message -->
            <div class="panel panel-default">
                <div class="panel-heading">{{ Lang::choice('default.message.title', $messages->count()) }}</div>
                <div class="panel-body">
                    <ul class="list-group">
                        @foreach($messages->getMessages() as $message)
                            <li class="list-group-item">{{ $message }}</li>
                        @endforeach
                    </ul>
                </div>
            </div>
        @endif
    </div>
@stop

我的主模板在views/layout.blade.php中进行了本地化,类似于

<!DOCTYPE html>
<html lang="{{ App::getLocale() }}">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        {{ HTML::script('js/bootstrap/bootstrap.min.js') }}
        {{ HTML::script('js/jquery/jquery-2.1.1.min.js') }}
        {{ HTML::style('css/bootstrap/bootstrap.min.css') }}
        {{ HTML::style('css/bootstrap/bootstrap-theme.min.css') }}
        {{ HTML::style('css/custom/custom.css') }}
        <title>Title of the document</title>
    </head>
    <body>
        <div id="generalwrapper">
            <div id="headerwrapper">
                HEADER
            </div>
            <div id="menuwrapper">
                MENU
            </div>
            {{ INSERT MESSAGES VIEW HERE }}
            <div id="content" class="container-fluid">
                @yield('content')
            </div>
            <div id="footerwrapper">
                FOOTER
            </div>
        </div>
    </body>
</html>

如何将我的邮件s.blade.php插入到layout.blade.php中?这样,我可以为每个使用layout.blade.php的视图发送消息吗?

您也可以从视图中选择@include模板:

@include('view.name')

在你的情况下,从你的layout.blade.php你可以做:

@include('template.messages')

文档