- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
有人知道是否可以延长 child Blade 吗?
我的应用程序有一个通用的布局模板,然后每个页面都从该模板@extends。每个页面都可以根据需要为其他 HTML block (例如模态)引入一系列 @includes。
@extends('common.layout')
@section('content')
... Some other content ...
@include('modals.modal-1')
@include('modals.modal-2')
@endsection
所有的模态都有很多通用的样板代码(Bootstrap),所以我想做的是定义一个主模型模板,让所有的模态从它@extend,然后在我的页面中@include那些作为必需的。所以/modals/modal-1.blade.php 看起来像这样:
@extends('common.modals')
@section('modal-id', 'modal-1')
@section('modal-title','Modal title')
@section('modal-body')
... Some HTML / Blade here ...
@endsection
但每次尝试时,生成的 HTML 都会损坏。在上述情况下,modal-1 会显示两次,因为它首先出现,而 modal-2 根本不会出现。颠倒顺序,modal-2 将出现两次。
我想我可以简单地将模态主体放在一个变量中并在@include 语句中使用它 @include('modal.blade', ['body' => '<div>...</div>'])
, 但使用 @extends 感觉更正确。
有什么想法吗?
最佳答案
您完全可以从已经扩展的 View 扩展 Blade View 。但是,您将模板继承与 View 包含混合在一起,这会导致您出现奇怪的结果。
当使用 @extend
指令继承模板时,您必须始终返回您想要的链上最低的子级。假设您有 3 代模板:
//grandparent.blade.php
<html>
<head>
<title>My App</title>
</head>
<body>
@yield('parent-content')
</body>
</html>
//parent.blade.php
@extends('grandparent')
@section('parent-content')
<div class="container">
@yield('child-content')
</div>
@endsection
//child.blade.php
@extends('parent')
@section('child-content')
<div class="page">
//stuff
</div>
@endsection
在这种情况下,您将返回 subview ,它还将包含其上方的两代模板。但是您可以永远返回parent.blade.php
并期望它也返回那个 subview 。可能有 100 个扩展父 View 的 subview ,因此无法知道是哪一个。
将 @include
指令视为一种将 View 中的 HTML 很好地分解成更小部分的方法。通常,您会将它用于要在多个 View 中引用的可重用代码片段。不过,它与模板继承不同。还要记住,包含的 View 将获得与其父 View 相同的所有数据(您甚至可以传递更多数据)。
在您的情况下,您必须决定什么构成页面的基本根。页面的核心是modal-1
吗?如果是这样,您需要从您的 Controller 返回 modal-1
作为您的 subview 并将其向上扩展。在这种情况下,请将文件完全保留在您的帖子中。它的父 View (common.modals
) 需要更改为:
@extends('common.layout')
@section('content')
... Some other content ...
@yield('modal-id')
@yield('modals-title')
@yield('modal-body')
@include('modals.modal-2')
@endsection
显然,您会将每个 yield 语句放在页面上有意义的地方。
但是,如果 modal-1
不是页面的核心,而只是您想要包含的额外内容(如小部件),那么您应该 include
它就像您在父 View 中所做的那样。在这种情况下,您将需要从中删除 @extends
指令,并且不必费心将主要 HTML 包装在任何部分中。它将按原样传递给 View 。如果您在包含的模板中包含部分,则必须在包含它的 View 中生成这些部分。所以你的 modal-1
模板最终会看起来像这样:
<div>
<p>HTML goes here. No need to extend anything or wrap in a section.
You can still include {{$data}} though.
</p>
</div>
@section('script')
Including this section means that the view that is including this template
already contains a @yield('script') directive.
By including the @parent directive, this section will append that one.
@parent
@endsection
关于php - Laravel Blade : @extend a (already extended) child blade?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33344580/
我知道 Laravel 的 Blade 模板位于/resource/views 目录中。它的扩展名是 .blade.php 。 我的问题是我已经为前端设计人员设置了一个单独的 repo 来处理 bla
我知道 Laravel 的 Blade 模板位于/resource/views 目录中。它的扩展名是 .blade.php 。 我的问题是我已经为前端设计人员设置了一个单独的 repo 来处理 bla
在我的数据库中,我保存包含 Blade 标记的文本,例如: Hello {!! $name !!} how are you today. 我将此文本传递到变量 $text 中的电子邮件模板。在我使用的
我想从3个表构建 Blade View : “inputs_details”-字段:article_type(值:“p”代表产品,'s'代表服务),article_id,...。 “产品”-字段:ID
我正在使用 Laravel 5.1。我正在尝试将 Blade 指令 (@extend) 与我的自定义 Blade 指令一起使用。 Blade::directive('base', function()
我的 Blade 中有一个表格,其中包含 2 个日期供用户选择,例如: {{csrf_field()}} From
我正在尝试使用表单生成器创建一个按钮 {!! Form::button(' 'yourstyle']); 关于php - 在 Blade 代码中插入 Blade 代码,我们在Stack Overflo
我正在渲染一个页面,该页面主要是 Laravel 中带有 view::make 的表单,它正在崩溃,导致 ERR_CONNECTION_RESET。经过长时间的调查和许多红鲱鱼,我开始从 Blade
我有以下路径的部分 View 。 /views/acp/review/check.details.blade.php 我如何使用 Blade 包含这样的文件,因为如果我这样做 @include('vi
我继承了一个 Laravel 项目,该项目有许多 Blade 文件, Blade 文件中的标签内带有 javascript。问题是有很多重复的 JS 逻辑,所以我想提取 JS 并创建 JS 文件以包含
我正在为 laravel 项目中基于 Blade 的组件创建文档,并希望将语法突出显示的 Blade 代码片段显示为文档的一部分,就像这样: 我已经安装了 graham-campbell/markdo
在我激活 Facade 的 Lumen 应用程序中($app->withFacades() in app's bootstrap)我无法在 Blase 模板中使用 URL 类。 {{ URL::pre
我正在为 laravel 项目中基于 Blade 的组件创建文档,并希望将语法突出显示的 Blade 代码片段显示为文档的一部分,就像这样: 我已经安装了 graham-campbell/markdo
在我激活 Facade 的 Lumen 应用程序中($app->withFacades() in app's bootstrap)我无法在 Blase 模板中使用 URL 类。 {{ URL::pre
有人知道是否可以延长 child Blade 吗? 我的应用程序有一个通用的布局模板,然后每个页面都从该模板@extends。每个页面都可以根据需要为其他 HTML block (例如模态)引入一系列
我试图在 blade 中设置一个 php 变量。它可以在同一个 Blade 上工作,而不是在其他 Blade 上设置 var。 例子: header.blade.php @if(isset($comp
情况: 我正在制作一个侧面菜单,该菜单通过从表 (MySQL) 中获取数据来填充。 每代表菜单的一项: item 1 item 2 item 3 等等... 问题: 当我看到它的 Blade 时一切正
我在主视图中有 3 个元素 标题(导航栏) 内容 页脚 在 app.blade.php 中 @include('header') @yield('content')
我想将输入值从一个 Blade 文件传递到另一个 Blade 文件。 我是 PHP Laravel 的新手,在尝试使用它时遇到错误。 我认为我的语法在这里是错误的。有人可以帮忙吗? channel .
所以我的困境是这样的。 Email: info@example.com 正在作为 Blade 代码处理,不会在我的 Laravel 4 框架中的响应式 Bootstrap 网页中调整大小。 关于如何让
我是一名优秀的程序员,十分优秀!