نسخه:

قالب ها

چیدمان های کنترلر

یکی از روش های استفاده از قالب ها در لاراول از طریق طرح بندی کنترلرها است. با تعیین layout ویژگی روی کنترلر، نمای مشخص شده برای شما ایجاد می شود و پاسخ فرضی است که باید از اکشن ها برگردانده شود.

تعریف یک چیدمان روی یک کنترلر

class UserController extends BaseController {
 
/**
* The layout that should be used for responses.
*/
protected $layout = 'layouts.master';
 
/**
* Show the user profile.
*/
public function showProfile()
{
$this->layout->content = View::make('user.profile');
}
 
}

قالب تیغه

Blade یک موتور قالب ساده و در عین حال قدرتمند است که با لاراول ارائه شده است. برخلاف طرح‌بندی‌های کنترل‌کننده، Blade بر اساس وراثت قالب و بخش‌ها هدایت می‌شود . همه قالب های Blade باید از .blade.php پسوند استفاده کنند.

تعریف طرح بندی تیغه

<!-- Stored in app/views/layouts/master.blade.php -->
 
<html>
<body>
@section('sidebar')
This is the master sidebar.
@show
 
<div class="container">
@yield('content')
</div>
</body>
</html>

استفاده از طرح بندی تیغه

@extends('layouts.master')
 
@section('sidebar')
@@parent
 
<p>This is appended to the master sidebar.</p>
@stop
 
@section('content')
<p>This is my body content.</p>
@stop

توجه داشته باشید که نماهایی که extend یک طرح Blade به سادگی بخش هایی از طرح را لغو می کند. محتوای طرح‌بندی را می‌توان با استفاده از @parent دستورالعمل در یک بخش در نمای کودک گنجاند و به شما امکان می‌دهد به محتوای یک بخش طرح‌بندی مانند نوار کناری یا پاورقی اضافه کنید.

گاهی اوقات، مانند زمانی که مطمئن نیستید که یک بخش تعریف شده است، ممکن است بخواهید یک مقدار پیش فرض را به دستورالعمل ارسال کنید @yield . می توانید مقدار پیش فرض را به عنوان آرگومان دوم ارسال کنید:

@yield('section', 'Default Content')

سایر سازه های کنترل تیغه

بازتاب داده ها

Hello, {{{ $name }}}.
 
The current UNIX timestamp is {{{ time() }}}.

بازتاب داده ها پس از بررسی وجود

گاهی اوقات ممکن است بخواهید یک متغیر را تکرار کنید، اما مطمئن نیستید که متغیر تنظیم شده است یا خیر. در اصل، شما می خواهید این کار را انجام دهید:

{{{ isset($name) ? $name : 'Default' }}}

با این حال، به جای نوشتن یک دستور سه تایی، Blade به شما امکان می دهد از میانبر راحت زیر استفاده کنید:

{{{ $name or 'Default' }}}

نمایش متن خام با بریس های فرفری

اگر نیاز به نمایش رشته ای دارید که در پرانتزهای فرفری پیچیده شده است، می توانید با قرار دادن پیشوند متن خود با یک @ نماد از رفتار Blade فرار کنید:

@{{ This will not be processed by Blade }}

البته، تمام داده‌های ارائه‌شده توسط کاربر باید حذف یا خالص شوند. برای فرار از خروجی، می توانید از نحو پرانتز سه گانه استفاده کنید:

Hello, {{{ $name }}}.

اگر نمی‌خواهید داده‌ها از بین بروند، می‌توانید از بریس‌های فرفری دوتایی استفاده کنید:

Hello, {{ $name }}.

توجه: هنگام بازتاب محتوایی که توسط کاربران برنامه شما ارائه می شود بسیار مراقب باشید. برای فرار از هر گونه موجودیت HTML در محتوا، همیشه از نحو پرانتز سه گانه استفاده کنید.

اگر بیانیه ها

@if (count($records) === 1)
I have one record!
@elseif (count($records) > 1)
I have multiple records!
@else
I don't have any records!
@endif
 
@unless (Auth::check())
You are not signed in.
@endunless

حلقه ها

@for ($i = 0; $i < 10; $i++)
The current value is {{ $i }}
@endfor
 
@foreach ($users as $user)
<p>This is user {{ $user->id }}</p>
@endforeach
 
@forelse($users as $user)
<li>{{ $user->name }}</li>
@empty
<p>No users</p>
@endforelse
 
@while (true)
<p>I'm looping forever.</p>
@endwhile

از جمله نماهای فرعی

@include('view.name')

همچنین می توانید آرایه ای از داده ها را به نمای موجود ارسال کنید:

@include('view.name', array('some'=>'data'))

رونویسی بخش ها

برای بازنویسی کامل یک بخش، می توانید از overwrite عبارت زیر استفاده کنید:

@extends('list.item.container')
 
@section('list.item.content')
<p>This is an item of type {{ $item->type }}</p>
@overwrite

نمایش خطوط زبان

@lang('language.line')
 
@choice('language.line', 1)

نظرات

{{-- This comment will not be in the rendered HTML --}}

تیغه گسترش دهنده

Blade حتی به شما اجازه می دهد تا ساختارهای کنترلی سفارشی خود را تعریف کنید. هنگامی که یک فایل Blade کامپایل می شود، هر پسوند سفارشی با محتویات view فراخوانی می شود که به شما امکان می دهد هر کاری از str_replace دستکاری های ساده گرفته تا عبارات منظم پیچیده تر را انجام دهید.

کامپایلر Blade با متدهای کمکی createMatcher و createPlainMatcher , که عبارتی را که برای ساختن دستورالعمل های سفارشی خود نیاز دارید را تولید می کند.

این createPlainMatcher روش برای دستورات بدون آرگومان‌هایی مانند @endif و @stop در حالی که createMatcher برای دستورالعمل‌های دارای آرگومان استفاده می‌شود.

مثال زیر یک @datetime($var) دستورالعمل ایجاد می کند که به سادگی فراخوانی می ->format() کند $var :

Blade::extend(function($view, $compiler)
{
$pattern = $compiler->createMatcher('datetime');
 
return preg_replace($pattern, '$1<?php echo $2->format(\'m/d/Y H:i\'); ?>', $view);
});