【问题标题】:Blade templating (Laravel) overwrite issues刀片模板(Laravel)覆盖问题
【发布时间】:2014-10-13 07:26:11
【问题描述】:

我有一个“主”布局,其中包含一个部分:@yield('other-scripts')

我在另一个视图中使用这个主模板 (especie.blade.php):

@extends('layouts.master')

@include('layouts.editarEspecie')

@section('other-scripts')
    {{ HTML::script('js/lightbox.js') }}
@stop

layouts.editarEspecie 内部,@section('other-scripts') 也被覆盖:

@section('other-scripts')
    {{ HTML::script('js/chosen.jquery.js') }}
    {{ HTML::script('js/chosenScriptModal.js') }}
    {{ HTML::script('js/scripts.js') }}
@stop

问题是@include('layouts.editarEspecie') 先出现,所以@section('other-scripts') 永远不会在especie.blade.php 中添加部分。

我该怎么做才能添加这两个部分并以这样的方式结束?

{{ HTML::script('js/chosen.jquery.js') }}
{{ HTML::script('js/chosenScriptModal.js') }}
{{ HTML::script('js/scripts.js') }}
{{ HTML::script('js/lightbox.js') }}

P.S.:我这样做是因为 lightbox.js 始终是必需的,但 chosen.jquery.js, chosenScriptModal.js, scripts.js 可能并不总是必需的。

【问题讨论】:

    标签: php laravel laravel-4 blade


    【解决方案1】:

    layouts.editarEspecie 内部没有“部分”——只有这个:

    {{ HTML::script('js/chosen.jquery.js') }}
    {{ HTML::script('js/chosenScriptModal.js') }}
    {{ HTML::script('js/scripts.js') }}
    

    那么这 3 行将始终包含在内。

    【讨论】:

    • 问题是,我不希望这 3 行总是进入 layouts.editarEspecie,只是在满足某些条件时(此处未显示)
    • 在这种情况下,请尝试使用@parent(更多信息请参见此处:laravel.com/docs/templates#blade-templating) - 否则将您的某个部分命名为不同的名称 - 您不能同时调用它们 other-scripts
    【解决方案2】:

    问题是,我不希望那 3 行总是进入里面 layouts.editarEspecie,仅当满足某些条件时(未显示 在这里)

    ummmmm.. 我知道它是有史以来最快的东西,但如果它你总是可以 PHP

    <?php
    if (condition)
     {
     ?>
    {{ script here}}
    <?php
    }
    else
    {}
    ?>
    

    对不起,我的解释很懒,但我相信你得到了提示

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 2013-04-29
      • 2017-08-24
      • 2021-04-24
      • 2016-01-10
      相关资源
      最近更新 更多