Laravel 10.x pamoka. Blade šablonai

Jau pastebėjote, kad kuriant vaizdus, kuriame ne *.php, o *.blade.php failus. Taip yra todėl, kad Laravel karkasas vaizdams kurti naudoja Blade šablonus. Blade šablonų dėka PHP ir HTML kodai tampa lengvai suderinami. Blade šablonuose galite naudoti įprastą PHP kalbą, bet tai nėra optimalu ir toks kodas atrodo parašytas neišprususio programuotojo, todėl rekomenduoju perprasti Blade sintaksę.

Kintamųjų išvedimas

Blade šablonuose kintamojo reikšmės išvedimui naudojami dvigubi figūriniai skliaustai:
Hello, {{ $username }}
Taip pat figūrinių skliaustų viduje galima rašyti PHP funkcijas (kabliataškis po jų nėra reikalingas):
{{ date('Y-m-d') }}
PASTABA. Norint išvengti XSS atakų, visi kintamieji automatiškai apdorojami PHP standartinės funkcijos htmlspecialchars(). Todėl jeigu jums reikia, kad kintamasis nebūtų apdorotas su funckija htmlspecialchars(), tuomet kintamojo reikšmės išvedimui naudokite tokią sintaksę:
Hello, {!! $username !!}
Pavyzdžiui, galite pamėginti kokiame nors vaizde įrašyti:
@php
    $string = '<b>pasauli</b>';
@endphp
<p>Labas, {{ $string }}!</p>
<p>Labas, {!! $string !!}!</p>
Šiuo atveju naršyklės lange matysite:

Labas, <b>pasauli</b>!
Labas, pasauli!

Direktyvos

Dažniausiai naudojamų direktyvų sąrašas pateikiamas lentelėje:
@extends
@extends('layouts.admin')
Naudojama šablonui tėvui užkrauti.
@section
@section('title', 'This is page title')
Naudojama trumpo turinio be HTML žymių perdavimui į tėvą šabloną, pvz., puslapio pavadinimui, antraštės pavadinimui ir pan.
@section('content')
    This is page content.
@endsection
Naudojama turinio su HTML kodu perdavimui į tėvą šabloną.
@yield
@yield('content')
Naudojama tėve šablone nurodyti sekcijos vietą.
@include
<div>
    @include('books.errors')
    <form>
        <!-- Form content -->
    </form>
</div>
Naudojama kai į vieną vaizdą reikia pajungti kitą vaizdą, taip vadinamą subvaizdą, pvz., galima naudoti klaidų pranešimams, modalinių dialogo langų atvaizdavimui ir pan.
@include('view.name', ['variable1' => 'value', 'variable2' => 'data'])
Galima nurodyti ir masyvą kintamųjų su jų reikšmėmis, kurie bus perduoti subvaizdui.
@php
@php
    //...
@endphp
Naudojama aprašyti bet kokiam PHP kodui.
@if, @elseif, @else ir @endif
@if (count($records) === 1)
    One record!
@elseif (count($records) > 1)
    Multiple records!
@else
    No any records!
@endif
Naudojama aprašyti if sąlygos sakiniams.
@for
@for ($i = 0; $i < 10; $i++)
    The current value is {{ $i }}.
@endfor
Naudojama aprašyti for ciklui.
@foreach
@foreach ($users as $user)
    This is user {{ $user->id }}.
@endforeach
Naudojama aprašyti foreach ciklui.
@forelse
@forelse ($users as $user)
    {{ $user->name }}
@empty
    No users
@endforelse
Naudojama aprašyti @forelse ciklui. Tai nėra standartinis ciklas, jis gali patikrinti, ar masyvas nėra tuščias ir tokiu atveju išvesti kokį nors pranešimą.
@while
@while (true)
    This is infinite loop.
@endwhile
Naudojama aprašyti while ciklui.
@switch, @case, @break ir @default
@switch($i)
    @case(1)
        First case...
        @break

    @case(2)
        Second case...
        @break

    @default
        Default case...
@endswitch
Naudojama aprašyti switch ciklui.
@csrf
<form method="POST" action="/profile">
    @csrf
    ...
</form>
Naudojama kiekvienoje formoje CSRF žetono (angl. token) lauko įterpimui. CSRF žetonas - tai atsitiktinai sugeneruota simbolių seka, kuri apsaugo jūsų aplikaciją nuo CSRF atakų.
@error
<input id="title" type="text" class="@error('title') is-invalid @enderror">
@error('title')
    <div class="alert alert-danger">{{ $message }}</div>
@enderror
Naudojama validacijos klaidų išvedimui.
@auth
@auth
    // The user is authenticated...
@endauth
Naudojama išvesti turiniui, kuris yra skirtas prisijungusiam naudotojui.
@guest
@guest
    // The user is not authenticated...
@endguest
Naudojama išvesti turiniui, kuris yra skirtas neprisijungusiam naudotojui.
@isset
@isset($variable)
    // $records is defined and is not null...
@endisset
Naudojama išvesti turiniui, kai kintamasis yra apibrėžtas ir jo reikšmė nelygi NULL.
@empty
@empty($variable)
    // $records is "empty"...
@endempty
Naudojama išvesti turiniui, kai kintamasis yra "tuščias", t. y. $variable = ''.

$loop kintamasis

Viduje ciklų galima naudoti $loop kintamąjį, pvz.:
@foreach ($users as $user)
    @if ($loop->first)
        This is the first iteration.
    @endif

    @if ($loop->last)
        This is the last iteration.
    @endif

    This is user {{ $user->id }}
@endforeach
$loop kintamojo variacijos:
Variacija Aprašymas
$loop->index Einamojo masyvo elemento indeksas (prasideda nuo 0).
$loop->iteration Einamoji iteracija cikle (prasideda nuo 1).
$loop->remaining Likusių iteracijų skaičius cikle.
$loop->count Elementų skaičius masyve.
$loop->first Ar tai pirmoji ciklo iteracija.
$loop->last Ar tai paskutinė ciklo iteracija.
$loop->even Ar tai lyginė iteracija.
$loop->odd Ar tai nelyginė iteracija.
$loop->depth Einamojo ciklo gylis (kai naudojamas ciklas cikle).
Daugiau apie Blade šablonus skaitykite oficialioje Laravel 10.x dokumentacijoje, skiltyje Blade Templates.

Paskutinį kartą puslapis keistas 2023-04-24

© Joana Katina 2016-2024. Visos teisės saugomos