Laravel - @yield가 비어 있는지 확인합니다.
@yield에 컨텐츠가 있는지 없는지 블레이드 뷰를 체크인할 수 있습니까?
보기에서 페이지 제목을 할당하려고 합니다.
@section("title", "hi world")
그래서 메인 레이아웃 뷰를 확인하고 싶은데요...다음과 같은 것.
<title> Sitename.com {{ @yield('title') ? ' - '.@yield('title') : '' }} </title>
지금 보시는 분들은 (2018+) 다음을 이용하실 수 있습니다.
@hasSection('name')
@yield('name')
@endif
참조: https://laravel.com/docs/5.6/blade#control-structures
라라벨 5에서 우리는 지금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')
그hasSection
메소드는 2015년 4월 15일에 추가되었습니다.
아마 더 예쁜 방법이 있을 겁니다.하지만 이게 효과가 있어요.
@if (trim($__env->yieldContent('title')))
<h1>@yield('title')</h1>
@endif
문서에서 제공되는 내용:
@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
@hasSection('content')
@yield('content')
@else
\\Something else
@endif
If 문 - Laravel 문서에서 "섹션 지시사항" 참조
섹션이 존재하는지 여부를 간단히 확인할 수 있습니다.
if (isset($__env->getSections()['title'])) {
@yield('title');
}
한 단계 더 나아가 이 작은 코드 조각을 Blade 확장 버전(http://laravel.com/docs/templates#extending-blade 으로 포장할 수도 있습니다.
새로운 Laravel 7.x --sectionMissing()
:
@hasSection('name')
@yield('name')
@else
@yield('alternative')
@endif
섹션이 누락되었는지 확인합니다.
@sectionMissing('name')
@yield('alternative')
@endif
간단한 답변을 완료합니다.
<title> Sitename.com @hasSection('title') - @yield('title') @endif </title>
솔루션에 대해서도 유사한 문제가 있습니다.
@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
@if (View::hasSection('my_section'))
<!--Do something-->
@endif
사용하다View::hasSection
구간이 정의되어 있는지 확인하고View::getSection
사용하지 않고 섹션 내용을 가져오다@yield
블레이드 지시.
<title>{{ View::hasSection('title') ? View::getSection('title') . ' - App Name' : 'App Name' }}</title>
그럴 수는 없겠지만 뷰 작성자를 사용하여 항상 $ 타이틀을 뷰에 제공하는 것과 같은 옵션이 있습니다.
View::composer('*', function($view)
{
$title = Config::get('app.title');
$view->with('title', $title ? " - $title" : '');
});
제목을 변수로 전달하는 것이 어떨까요?View::make('home')->with('title', 'Your Title')
이것은 당신의 타이틀을 사용할 수 있게 해 줄 것입니다.$title
할 수 없음:
layout.blade.layout
<title> Sitename.com @section("title") Default @show </title>
그리고 서브템플릿으로.blade.s:
@extends("layout")
@section("title") My new title @stop
확인방법은 '@' 바로가기를 사용하지 않고 '섹션'이라는 긴 형태를 사용합니다.
<?php
$title = Section::yield('title');
if(empty($title))
{
$title = 'EMPTY';
}
echo '<h1>' . $title . '</h1>';
?>
콜린 제임스의 답변을 토대로, 명확하지 않다면 다음과 같은 것을 추천합니다.
<title>
{{ Config::get('site.title') }}
@if (trim($__env->yieldContent('title')))
- @yield('title')
@endif
</title>
해당 섹션에만 포함하고자 하는 엔클로저 코드가 비어 있지 않은 경우도 있습니다.이 문제에 대해 방금 다음과 같은 해결책을 찾았습니다.
@if (filled(View::yieldContent('sub-title')))
<h2>@yield('sub-title')</h2>
@endif
제목 H2는 실제로 모든 값을 포함하고 있는 섹션에만 표시됩니다.그렇지 않으면 인쇄되지 않습니다...
언급URL : https://stackoverflow.com/questions/20412738/laravel-check-if-yield-empty-or-not
'source' 카테고리의 다른 글
RunSettings 파일 내에서 TestRunParameters에 액세스하는 방법 (0) | 2023.09.12 |
---|---|
CSS 너비의 소수점 자리가 존중됩니까? (0) | 2023.09.12 |
Oracle SQL: IN 절 내에서 1000개 이상의 항목을 사용하는 방법 (0) | 2023.09.12 |
작성 테이블 쿼리에서 외부 키 제약 조건을 작성하려고 할 때 SQL 구문 오류 1064 (0) | 2023.09.12 |
'xmlhttp.setRequest'란 무엇입니까?Header();'와 어떤 상황에서 사용됩니까? (0) | 2023.09.12 |