Laravel 5
На основе статьи https://medium.com/@adisk/10-underused-laravel-blade-directives-95e0666df29f
В этой статье приведен список из 10 директив шаблонизатора blade фреймворка laravel. Эти незаслуженно мало используются, хотя делают код чище и значительно экономят время.
1. @forelse
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
@if ($users->count()>0) @foreach($users as $user) <li>{{ $user->name }}</li> @endforeach @else <p>No users</p> @endif // Лучше вариант: @forelse ($users as $user) <li>{{ $user->name }}</li> @empty <p>No users</p> @endforelse |
2. @each
1 2 3 4 5 6 7 8 9 10 11 |
@foreach($users as $user) @include('components.userdetail',['user'=>$user]) @endforeach // Лучше вариант: @each('component.userdetail',$users,'user') // или @each('components.userdetail',$users,'user','components.usernotfound') |
3. @json
1 2 3 4 5 6 7 8 9 |
<script> var users = {!! json_encode($users) !!}; </script> // Лучше вариант: <script> var users = @json($users); </script> |
4. @verbatim
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<div class="container"> Hello, @{{ name }}. Date, @{{ date }}. </div> // Лучше вариант: @verbatim <div class="container"> Hello, {{ name }}. Date, {{ date }}. </div> @endverbatim |
5. @isset и @empty
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
@if(isset($records)) // Переменная $records определена и не null @endif @if(empty($records)) // Переменная $records "пуста" @endif // Лучше вариант: @isset($records) // Переменная $records определена и не null @endisset @empty($records) // Переменная $empty "пуста" @endempty |
6. @php
1 2 3 4 |
@php // Выполнение php-кода в виде $val3 = $val1 + $val2 @endphp |
7. @push и @stack
1 2 3 4 5 6 7 8 9 |
<body> @stack('scripts') </body> // В дочернем виде @push('scripts') <script src="/example.js"></script> @endpush |
8. @inject
1 2 3 4 5 6 |
// Внедрение сервиса @inject('metrics','App\Services\MetricsService') <div> Ежемесячный отчет: {{ $metrics->monthReport() }} </div> |
9. @includeWhen
1 2 3 4 5 6 7 |
@if ($canViewSection) @include('components.section',['some'=>'data']) @endif // Лучше вариант: @includeWhen($canViewSection,'components.section,['some'=>'data']) |
10. @hasSection
1 2 3 4 5 6 7 |
// Проверка, существует ли секция в дочернем виде @hasSection('navigation') <div class="pull-right"> @yield('navigation') </div> <div class="clearfix"></div> @endif |