【问题标题】:Laravel Section not appearLaravel 部分没有出现
【发布时间】:2012-12-13 19:16:21
【问题描述】:

我会关注一些关于 Laravel 3 的教程,并且知道,我有一个问题:

@section('post_navigation')
@if(Auth::check())
    @include('plugins.loggedin_postnav')
@endif
@endsection

为什么这部分没有出现?

例如,我尝试删除部分中的所有内容;

@section('post_navigation')
    <h1>Test</h1>
@endsection

但不起作用。

完整的代码是:

<div class="navbar navbar-inverse navbar-fixed-top">
    <div class="navbar-inner">
        <div class="container">
            {{ HTML::link('/', 'Instapics', array('class' => 'brand')); }}

            <div class="nav-collapse">
                <ul class="nav">
                    @section('navigation')
                        <li class="active">{{ HTML::link('/', 'Home') }}</li>
                    @yield_section
                </ul>
            </div>

            @section('post_navigation')
            @if(Auth::check())
                @include('plugins.loggedin_postnav')
            @endif
            @endsection

        </div>
    </div>
</div>


[编辑]
我将@endsection 更改为@yield_section,并且可以工作,但是我仍然不明白,例如(在 User_Controller 索引视图中):

@section('post_navigation')
    @parent
@endsection

为什么不出现包含?

为什么我需要将 endsection 更改为 yield_section

【问题讨论】:

    标签: php laravel laravel-3


    【解决方案1】:

    看来您可能已经找到了答案。但看起来@endsection 在 L4 中已被 @stop 取代。试试这样的:

    @section('scripts')
        <script src="jquery.js"></script>
    @stop
    

    【讨论】:

    • 谢谢。无论如何,当我使用 \@endsection 时,如何在此部分中“添加”更多项目? \@section9('scripts') \@stop in my view?
    【解决方案2】:

    当你使用@section 时,你定义一个节就像定义一个变量一样。然后,您可以通过@yield('sectionname')(或使用我在第二段中指定的另一种方式)在您想要的地方使用它。例如,你可以看看这个:

    @section('scripts')
        <script src="jquery.js"></script>
    @endsection
    
    <head>
        @yield('scripts')
    </head>
    

    @section / @endsection 和 @section / @yield_section 不一样。 @section / @yield_section 定义了一个节区域,而不是一个节。换句话说,它调用了一个变量。实际上它更类似于 yield('sectionname') 而不是 @section / @endsection。它具有默认值作为与产量的主要区别。

    您可以定义一个具有默认值的区域,然后您可以通过定义一个部分来更改它。此逻辑主要在创建和使用布局时使用。例如,让下面的页面成为我们的主要 (main.blade.php) 布局。

    <html>
        <head>
            <title>
            @section('title')
            Default Title Maybe Sitename.com
            @yield_section
            </title>
            @include('scripts')
        </head>
        <body>
            <div id="content">
            @section('content')
                Default content
            @yield_section
            </div>
            <div id="sidebar">
            @section('sidebar')
                <ul id="menu">
                    <li><a href="#">Menu item 1</a></li>
                    <li><a href="#">Menu item 2</a></li>
                    <li><a href="#">Menu item 3</a></li>
                    <li><a href="#">Menu item 4</a></li>
                </ul>
            @yield_section
        </body>
    </html>
    

    通常不直接使用布局。另一个页面被创建并在页面中指定其布局,如@layout('main')。然后,定义部分,laravel 模板系统更改定义的部分。让这个页面成为我们的帖子(post.blade.php)页面:

    @layout('main')
    
    @section('title')
    $post->title - @parent
    @end_section
    
    @section('content')
    $post->content
    @end_section
    

    当我们返回帖子视图View::make('profile'); 时,如您所见,布局逻辑将起作用,main.blade.php 中的部分将根据我们在此页面中定义的内容进行更改。因此,输出将是:

    <html>
        <head>
            <title>
            Post title - Default Title Maybe Sitename.com
            </title>
            <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
        </head>
        <body>
            <div id="content">
                Post content
            </div>
            <div id="sidebar">
                <ul id="menu">
                    <li><a href="#">Menu item 1</a></li>
                    <li><a href="#">Menu item 2</a></li>
                    <li><a href="#">Menu item 3</a></li>
                    <li><a href="#">Menu item 4</a></li>
                </ul>
        </body>
    </html>
    

    顺便说一句,@parent 在节区返回默认值,@include 与 php 中的 include 逻辑相同。

    祝你有美好的一天。

    【讨论】:

    • 在这个确切的时刻,我读到了它,并解决了问题,但是,无论如何,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-05-08
    • 2021-10-26
    • 2021-02-08
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    相关资源
    最近更新 更多