【问题标题】:Laravel 4 nested templatesLaravel 4 嵌套模板
【发布时间】:2013-11-07 08:00:46
【问题描述】:

亲爱的stackoverflowers,

首先我想告诉你,我是 laravel 4 的新手,所以如果我问这个问题是在自欺欺人,那就这样吧..

我已经建立了一个项目并想使用模板。到目前为止,我有这些文件夹/文件:

--views
----home
------home.blade.php
------login.blade.php
----layouts
------master.blade.php

我有一个 get-route 可以为“home.home”创建一个新视图,其中包含以下代码:

@extends('layouts.master')
@section('content')
{{-- zet via TAB om naar h1 met klasse 'subheader'
h1.subheader --}}
<div class="panel">
    <div class="page-header">
        <h1>Startpagina</h1>
    </div>

@if(Auth::Guest())
    @yield('login')
@else
@endif

</div>
@stop

现在我想制作另一个模板,它可以用作局部视图(这也可以是页眉、页脚……,但现在它是登录表单)。我以为这样就可以了,但显然它没有......

@extends('layouts.master')
@section('login')
    <p>Login form comes here</p>
@stop

有什么建议吗? 提前致谢。

HS.

【问题讨论】:

    标签: laravel laravel-4 blade


    【解决方案1】:

    您应该将它作为一个文件包含在您的登录文件中,而不是 @extends 语句(以及您希望它出现的所有视图)

    试试:

    @if(Auth::Guest())
        @include('login')
    @else
    
    @endif
    

    并删除登录视图本身中的@extends('layouts.master')@section('login')@stop。 您的主视图中存在的所有变量也将在您的登录视图中可用。

    如果您希望登录表单作为一个部分以自己的逻辑运行(或者它需要额外的数据),您应该考虑使用view composers

    【讨论】:

    • 我试过这个,但我得到一个 InvalidArgumentException: View [login] not found。 ?
    • 由于目录结构的原因,您可以考虑尝试home.login
    • 我以前试过这个。错误消失了,但内容不显示。
    • 解决了.. @section('login') 也必须被删除。谢谢您的帮助! :) 我编辑了你的答案。
    • 当然,重点是您包含视图而不是从布局中扩展它。我很高兴它现在得到了解决。
    猜你喜欢
    • 1970-01-01
    • 2012-12-16
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多