如果@yield有内容,是否可以检查刀片视图?
我正在尝试在视图中分配页面标题:
@section("title", "hi world")
所以我想检查一下主要的布局视图......如:
<title> Sitename.com {{ @yield('title') ? ' - '.@yield('title') : '' }} </title>
答案 0 :(得分:56)
在Laravel 5中,我们现在可以在 <a href="http://twitter.com/home/?status=Don\'t talk about yourself\; it will be done when you leave. -Wilson Mizner" class="btn btn-default btn-primary twitter">Tweet</a>
外观上调用hasSection
方法。
您可以使用View
检查View::hasSection
是否为空:
@yeild
此条件是检查我们的视图中是否设置了标题名称的部分。
提示:我看到很多新工匠设置了这样的标题部分:
<title>
@if(View::hasSection('title'))
@yield('title')
@else
Static Website Title Here
@endif
</title>
但你可以通过传入一个默认值作为第二个参数来简化这个:
@section('title')
Your Title Here
@stop
添加了@section('title', 'Your Title Here')
方法April 15, 2015。
答案 1 :(得分:43)
对于现在正在寻找的人(2018+),你可以使用:
if var sentBeacons = metrics["sentBeacons"] as? UInt {
sentBeacons += 1
}
答案 2 :(得分:38)
这可能是一种更漂亮的方法。但这就是诀窍。
@if (trim($__env->yieldContent('title')))
<h1>@yield('title')</h1>
@endif
答案 3 :(得分:15)
来自文档:
@yield('section', 'Default Content');
输入您的主要版面,例如“app.blade.php”,“main.blade.php”或“master.blade.php”
<title>{{ config('app.name') }} - @yield('title', 'Otherwise, DEFAULT here')</title>
并在特定视图页面(刀片文件)中输入如下内容:
@section('title')
My custom title for a specific page
@endsection
答案 4 :(得分:6)
您只需检查该部分是否存在:
if (isset($__env->getSections()['title'])) {
@yield('title');
}
您甚至可以更进一步将这一小段代码打包到Blade扩展中:http://laravel.com/docs/templates#extending-blade
答案 5 :(得分:1)
activeStatus: Joi.any().valid(1, 2, 3, [1, 2, 3])
// Method no longer accepts array arguments: valid'
请参见If Statements - Laravel docs中的“部分指令”
答案 6 :(得分:1)
Laravel 7.x的新功能-sectionMissing()
:
@hasSection('name')
@yield('name')
@else
@yield('alternative')
@endif
检查是否缺少该部分:
@sectionMissing('name')
@yield('alternative')
@endif
答案 7 :(得分:1)
在不使用View::hasSection
Blade指令的情况下,使用View::getSection
检查是否定义了节,并使用@yield
获取节的内容。
<title>{{ View::hasSection('title') ? View::getSection('title') . ' - App Name' : 'App Name' }}</title>
答案 8 :(得分:1)
@if (View::hasSection('my_section'))
<!--Do something-->
@endif
答案 9 :(得分:0)
以Collin Jame的答案为基础,如果不明显,我会推荐这样的话:
<title>
{{ Config::get('site.title') }}
@if (trim($__env->yieldContent('title')))
- @yield('title')
@endif
</title>
答案 10 :(得分:0)
检查的方法是不使用快捷键'@',而是使用长格式:Section。
<?php
$title = Section::yield('title');
if(empty($title))
{
$title = 'EMPTY';
}
echo '<h1>' . $title . '</h1>';
?>
答案 11 :(得分:0)
有时候您有一个封闭的代码,您只想包含在该部分中就不为空。对于这个问题,我刚刚找到了以下解决方案:
@if (filled(View::yieldContent('sub-title')))
<h2>@yield('sub-title')</h2>
@endif
标题H2仅显示在该部分确实包含任何值的情况下。否则它将无法打印...
答案 12 :(得分:0)
完整的答案
<title> Sitename.com @hasSection('title') - @yield('title') @endif </title>
答案 13 :(得分:0)
我的解决方案也有类似的问题:
@section('bar', '')
@hasSection('bar')
<div>@yield('bar')</div>
@endif
//Output
<div></div>
结果将为空的<div></div>
现在,我的建议是解决这个问题,
@if (View::hasSection('bar') && !empty(View::yieldContent('bar')))
<div>@yield('bar')</div>
@endif
答案 14 :(得分:0)
你不能这样做:
layout.blade.php
<title> Sitename.com @section("title") Default @show </title>
在subtemplate.blade.php中:
@extends("layout")
@section("title") My new title @stop
答案 15 :(得分:0)
我认为你不能,但你有选择,比如使用视图编辑器总是为你的观点提供一个$ title:
View::composer('*', function($view)
{
$title = Config::get('app.title');
$view->with('title', $title ? " - $title" : '');
});
答案 16 :(得分:0)
为什么不将标题作为变量View::make('home')->with('title', 'Your Title')
传递,这将使您的标题在$title