Laravel krok po kroku - część 3 - Blade

Paweł Mysior
26 czerwca 2018

Wprowadzenie

PHP zupełnie dobrze nadaje się do tworzenia szablonów, ma jednak pewne ograniczenia. Instrukcje typu <?php echo $variable; ?> w co drugiej linijce kodu HTML nie wyglądają zbyt czytelnie.

Silnik szablonów Blade wspomaga pracę z szablonami między innymi poprzez dodanie eleganckiego sposobu na wyświetlanie zmiennych, ułatwienie dziedziczenia layoutów i proste dyrektywy dla instrukcji if, for, foreach itp.

Pliki Blade używają rozszerzenia .blade.php i znajdują się w katalogu resources/views.

Wyświetlanie zmiennych

Aby móc wyświetlić w widoku wartość zmiennej, musimy najpierw przekazać ją do widoku. Możemy to zrobić przekazując jako drugi parametr funkcji globalnej view() tablicę danych.

// routes/web.php
Route::get('/', function () {
    return view('index', ['name' => 'John']);
});

W widoku resources/views/index.blade.php będziemy mieli dostępną zmienną $name. Możemy wyświelić przypisaną do niej wartość używając podwójnych klamer {{ $name }}.

// resources/views/index.blade.php
<p>Hello {{ $name }}</p>

Blade podczas kompilacji zamienia {{ $variable }} na <?php echo htmlspecialchars($variable); ?>. Funkcja htmlspecialchars() konwertuje znaki specjalne na encje HTML.

Jeśli chcemy żeby została wstawiona jako kod HTML, bez użycia wspomnianej wyżej funkcji, używamy takiej składni:

<p>Hello {!! $name !!}</p>

Struktury kontrolne (@if, @for, @foreach)

Blade udostępnia też dyrektywy, które działają na ten samej zasadzie co zwykłe struktury kontrolne w PHP. Najłatwiej bedzie posłużyć się przykładami:

@if (count($tasks) === 1)
    There is one task.
@elseif (count($tasks) > 1)
    There are multiple tasks.
@else
    There are no tasks.
@endif
@for ($i = 0; $i < 10; $i++)
    The number is: {{ $i }}
@endfor
@foreach ($tasks as $task)
    <p>{{ $task->title }} - {{ $task->status }}</p>
@endforeach

Layouty

W większości stron internetowych, pewne elementy, takie jak nagłówek czy menu, są takie same na wszystkich podstronach. Blade pomaga utrzymać w tym porządek, na początku zdefinujmy sobie layout w pliku resources/views/layout.blade.php:

<html>
    <head>
        <title>Blog</title>
    </head>
    <body>
        <header>
            Blog
        </header>

        @yield('content')
    </body>
</html>

Teraz zdefiniujmy sobie plik resources/views/post.blade.php, który będzie używał tego layoutu:

@extends('layout')

@section('content')
    <h1>My first post</h1>

    <p>Lorem ipsum dolor sit amet</p>
@endsection

W pierwszej linijce pliku używamy dyrektywy @extends, która mówi widokowi post.blade.php, którego layoutu ma używać. Następnie za pomocą dyrektywy @section definiujemy sekcję content. Kod zawarty między @section('content')@endsection zostanie wyświetlony w miejscu, w którym w layoutcie użyliśmy dyrektywy @yield('content').

W pliku routes/web.php używamy helpera view() żeby wyświetlić widok:

Route::get('/blog/post', function () {
    return view('post');
});

Możemy zdefiniować dowolną liczbę sekcji w pliku Blade, każda z nich musi mieć unikalną nazwę.

Dołączanie plików (@include)

Blade pozwala też łatwo dołączać pliki za pomocą dyrektywy @include.

// resources/views/layout.blade.php

<div>
    @include('partials.navigation')

    <div>
        Content
    </div>
</div>

Wszystkie zmienne, które dostępne są w pliku layout.blade.php będą też dostępne w dołączonym widoku partials/navigation.blade.php.

Można też przekazać zmienne ręcznie, podając je w formie tablicy jako drugi parametr dyrektywy @include.

@include('partials.button', ['text' => 'Sign up'])

W tej części tutoriala dowiedzieliśmy się jak używać silnika szablonów Blade. W następnej części skonfigurujemy połączenie z bazą danych i stworzymy pierwszą tabelę.

Wygodny hosting zapewnia duet DigitalOceanLaravel Forge.
Copyright © laravelpolska.com

Drogi Użytkowniku!

Dalsze korzystanie z serwisu bez zmiany ustawień dotyczących cookies w przeglądarce oznacza akceptację plików cookies, co będzie skutkowało zapisywaniem ich na Twoich urządzeniach przez serwis internetowy laravelpolska.com. Jeśli nie wyrażasz zgody na przyjmowanie cookies, prosimy o zmianę ustawień w przeglądarce lub o opuszczenie serwisu. więcej

Stosujemy pliki cookies (tzw. ciasteczka) i inne pokrewne technologie, które mają na celu:

  • dostosowanie zawartości stron internetowych Serwisu do Twoich preferencji oraz optymalizacji korzystania ze stron internetowych; w szczególności pliki te pozwalają rozpoznać Twoje urządzenie i odpowiednio wyświetlić stronę internetową, dostosowaną do Twoich indywidualnych potrzeb;
  • utrzymanie Twojej sesji w Serwisie (po zalogowaniu), dzięki czemu nie musisz na każdej podstronie Serwisu ponownie wpisywać loginu i hasła,
  • zapewnienie bezpieczeństwa podczas korzystania z Serwisu,
  • ulepszenie świadczonych przez nas usług poprzez wykorzystanie danych w celach analitycznych i statystycznych,
  • poznanie Twoich preferencji na podstawie sposobu korzystania z naszych serwisów.

Wykorzystanie cookies pozwala nam zapewnić maksymalną wygodę przy korzystaniu z naszego Serwisu poprzez zapamiętanie Waszych preferencji i ustawień na naszych stronach. Więcej informacji o zamieszczanych plikach cookie oraz o możliwości zmiany ustawień przeglądarki oraz polityce przetwarzania danych znajdziesz w polityce prywatności.

Masz możliwość samodzielnej zmiany ustawień dotyczących cookies w swojej przeglądarce internetowej. Z poziomu przeglądarki internetowej, z której korzystasz, możliwe jest zarządzanie plikami cookies. W najpopularniejszych przeglądarkach istnieje m.in. możliwość:

  • zaakceptowania obsługi cookies, co pozwala na pełne korzystanie z opcji oferowanych przez witryny internetowe;
  • zarządzania plikami cookies na poziomie pojedynczych, wybranych przez użytkownika witryn;
  • określania ustawień dla różnych typów plików cookies, na przykład akceptowania plików stałych, jako sesyjnych itp.;
  • blokowania lub usuwania cookies.

Akceptuję pliki cookies