لاراول بلید یکی از قوی ترین و پیشرفته ترین موتورهای قالب سازی php در مقایسه با دیگر موتور های قالب همانند smarty یا twig می باشد.
laravel blade برای شما این امکان را فراهم می کند تا به سادگی کدهای php را به بخش view اضاف نمایید. در واقع blade ها بصورت کش شده هستند و پس از تغییر جدید بروز می شوند.
در این مطلب قصد داریم 10 دستور عالی و جذاب برای کار با blade ها در لاراول را به شما آموزش دهیم. پس تا انتها همراه ما باشید.
دستور include یکی از دستوراتی می باشد که در بلید ها ما به دفعات از آن استفاده می کنیم. این دستور به شما اجازه می دهد که یک بلید دیگر را در بلید خود فراخوانی و از تمام متغیر های blade والد درون آن نیز استفاده نمایید. دستور @include بصورت زیر می باشد:
@include('partials.sidebar')
شما همچنین می توانید بصورت دستی نیز مقادیر دلخواه را به عنوان دومین پارامتر به ویوی مورد نظر با استفاده از تابع include پاس دهید:
@include('partials.sidebar',['menu' => $menu])
مثلا در نمونه ی بالا ما در بلید sidebar به مقداری بنام $menu دسترسی خواهیم داشت و می توانیم از مقادیر آن استفاده نماییم.
شما در بلید ها میتوانید بخش های با استفاده از push ایجاد نمایید و سپس در بلید های فرزند با استفاده از stack آن را دریافت کنید.
برای نمونه شما بلیدی بنام header.blade.php دارید که یک stack بصورت زیر در آن تعریف میکنید:
<head>
<!-- Head Contents -->
@stack('scripts')
</head>
شما در بلید والد میتوانید محتوای آن را بصورت زیر ایجاد نمایید:
@push('scripts')
<script src="/example.js"></script>
@endpush
حال در head سایت هنگام بارگذاری فایل js فراخوانی خواهد شد.
از این دستور می توانید برای استفاده کدهای php درون بلید ها استفاده نمایید:
@php
// you php code here
@endphp
ممکن است هنگام ایجاد طرح ها و بلید های پیچیده بخواهید چک کنید که آیا section در بلید کنونی موجود هست یا خیر. برای این کار می توانید از تابع hasSection استفاده نمایید:
@hasSection('navigation')
@yield('navigation')
@endif
از این دستور می توانید برای ایجاد حلقه و قراردادن مقادیر استفاده نمایید. دستور کلی بصورت زیر می باشد:
@each('users.index', $users, 'user')
فرض کنید شما یک بلید بنام user.index دارید که شامل کدهایی html می باشد که میخواهید کاربران سایت را در آن نمایش دهید. با استفاده از کد بالا می توانید بلید، مقدار ورودی و متغییر خود را تعیین و به بلید مورد نظر پاس دهید. ( همانند کار با حلقه @foreach)
این تابع همچنین ورودی دیگری میگیرد که در صورت خالی بودن مقدار $users آن بلید را نمایش خواهد داد:
@each('users.index', $users, 'user', 'users.not_found')
مثال:
ما بلیدی داریم که کدهای نمایش مطالب را بصورت زیر در جدولی نمایش میدهیم:
<table class="table table-bordered">
<thead>
<tr>
<th>عنوان</th>
</tr>
</thead>
<tbody>
@foreach($articles as $article)
<tr id="{{$article->id}}">
<th>{{$article->title}}</th>
</tr>
@endforeach
</tbody>
</table>
حال می تواینم با استفاده از تابع @each بصورت زیر نیز خروجی بالا را ایجاد نماییم. برای اینکار یک فایل بنام row_article.blade.php ایجاد می کنیم و سپس کدهای بالا را بصورت زیر تغییر میدهیم:
<table class="table table-bordered">
<thead>
<tr>
<th>عنوان</th>
</tr>
</thead>
<tbody>
@each('row_article',$articles,'$article')
</tbody>
</table>
همچنین محتویات بلید row_article نیز بصورت زیر خواهد بود:
<tr id="{{$article->id}}">
<th>{{$article->title}}</th>
</tr>
گاهی مواقع ممکن است نیاز داشته باشید که اگر شرطی موجود باشد یک بلید نیز فراخوانی شود. برای این کار می توانید از دستور includeWhen استفاده نمایید.
برای نمونه در کد زیر اگر مقدار $isUserAdmin وجود داشته باشد بلید مورد نظر فراخوانی خواهد شد
@includeWhen($isUserAdmin, 'users.admin_card', ['user' => $user])
از این متغییر می توانید برای تبدیل یک متغیر به json در بلید خود استفاده نمایید:
<script>
var app = @json($array);
var app = @json($array, JSON_PRETTY_PRINT);
</script>
این دو دستور نیز همان کارهای دستوری های empty و isset در php برای برای بررسی خالی بودن یا وجود یک متغییر بررسی می کنند:
@if(isset($users))
// your logic here
@endif
@if(empty($users))
// your logic here
@endif
@isset($users)
// your logic here
@endisset
@empty($users)
// your logic here
@endempty
از این دستور می توانید برای دریافت یک سرویس در بلید خود استفاده نمایید.
ورودی اول این دستور نام سرویس شما و ورودی دوم آدرس کلاس یا اینترفیس مربوطه می باشد:
@inject('menu', 'App\Services\MenuService')
// then in your view
{!! $menu->render() !!}
هنگام ایجاد فرم ها می توانید از دستور @csrf برای ایجاد یک input بصورت hidden که حاوی توکن می باشد استفاده نمایید:
<form method="POST" action="/profile">
@csrf
...
</form>
خروجی دستور @csrf یک input بصورت زیر خواهد بود:
<input type="hidden" name="_token" value="DHlsiFUIuKktV0OWBaRZbYkfcKwvEKJ0n9fQzrQB">
همانطور که می دانید در html نمی توانیم متد های put, delete و patch را ایجاد کنیم. تابع @method یک input بصورت hidden به فرم ما اضاف میکند که می توانید متد مورد نظر را در آن قرار دهیم:
<form action="/foo/bar" method="POST">
@method('PUT')
...
</form>
کد بالا یک input بصورت زیر در فرم ما ایجاد خواهد کرد:
<input type="hidden" name="_method" value="PUT">
امیدوارم از این آموزش لذت برده باشید. اگرسوالی یا پیشنهادی دارید یا متدهای بهتری برای کار با بلید ها می شناسید از بخش نظرات برای ما ارسال کنید.
برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *
ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *