10 Directive de Laravel Blade pe care probabil nu le stii

postat acum 2 luni de Stefanescu Mihai in categorie iNoob

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.

Sunt un tanar programator din Bucuresti ce lucreaza in PHP/Mysql (MySqli/PDO), Laravel, CodeIgniter, MySQL, PostgreSQL, Wordpress, HTML5/CSS3, Sass, Photoshop si multe altele.
Google+ Community Facebook Group