10 Directive de Laravel Blade pe care probabil nu le stii

Blade este template engine-ul din Laravel. Acest template engine iti usureaza mult viata de dezvoltator, dar majoritatea probabil nu ne folosim de foarte multe dintre feature-urile lui. In acest articol vreau sa fac o lista cu 10 dintre directivele pe foarte multi probabil nici nu le cunosc.

@forelse

In loc de count inainte de un foreach putem folos forelse astfel:

@if ($articles->count() > 0)
    @foreach($articles as $article)
        <a href="{{ route('article.show', $article->slug) }}">{{ $article->title }}</a>
    @endforeach
@else
    <p>no articles</p>
@endif  

Va deveni:

@forelse($articles as $article)
   <a href="{{ route('article.show', $article->slug) }}">{{ $article->title }}</a> 
@empty
    <p>no articles</p>
@endforelse

@each

In loc sa facem foreach si apoi sa includem un partial:

@foreach($articles as $article)
    @include('articles.details', ['article' => $article])
@endforeach

Putem face:

@each('articles.details', $articles, 'article')

@json

In loc de json_encode cand pasam o variabla in javascript

<script>
    var articles = {!! json_encode($articles) !!}
</script>

Putem face:

<script>
    var articles = @json($articles)
</script>

@verbatim

<div class="container">
    Salut, @{{ name }}
</div>

va deveni

@verbatim
    <div class="container">
        Salut, {{ name }}
    </div>
@endverbatim

@isset si @empty

De multe ori suntem pusi in situatia de a folosi isset() si empty(), dar blade vine in ajutorul nostru cu 2 diretive foarte simple

@isset($articles)
    //e acelasi lucru cu @if(isset($articles))
@endisset

la fel si pentru empty

@empty($articles)
    //e acelasi lucru cu @if(empty($articles))
@endempty

@php

Putem folosi aceasta directiva pentru a scrie php in blade

@php
    $value = $item[1] + $item[2];
@endphp

@push si @stack

Folosite pentru a adauga js-uri in stack

//asta sta in master view
<body>
    @stack('scripts')
</body>

// iar undeva intr-un child

@push('scripts')
    <script src="/item.js"></script>
@endpush

@inject

Ne ajuta la injectarea unui anumit serviciu.

@inject('metrics', 'App\Services\MetricsService')

<div>
    Total Vanzari: {{ $metrics->totalRevenue() }}
</div>

@includeWhen

In loc de a face un if sa vedem daca trebuie sa nu sa afisam un anumit partial putem folosi includeWhen

@if($userCanViewSection)
    @include('components.section');
@endif

poate fi inlocuit cu 

@includeWhen($userCanViewSection, 'components.section')

@hasSection

Verifica daca o sectiune este prezenta in subview

@hasSection('navigation')
    <div class="pull-right">
        @yield('navigation')
    </div>
    <div class="clearfix"></div>
@endif

Sper ca aceste directive de blade sa va fie folositoare! pentru orice sugestii puteti folosi sectiunea de comentarii de mai jos.

Avem un cod de conduita.
Folosim cookie-uri pentru a oferi functionalitatile critice ale aplicatiei Invata-Programare. Folosim cookie-uri si pentru a analiza traficul, pentru care e nevoie de consimtamantul dvs. explicit.