Laravel bladeの使い方を忘れてしまったので思い出すには?

ショコラ
ショコラ

Laravel bladeの使い方を忘れてしまったので思い出すには?

bladeのまとめ

もっさん先輩
もっさん先輩

①変数の表示

{{ $変数 }}

イメージとしては↓。HTMLエスケープ処理されている。

<?= htmlspecialchars($変数) ?>

②変数の表示2

{!! $変数 !!}

イメージとしては↓。HTMLエスケープ処理がされていない。

<?= $変数 ?>

③PHPスクリプト

@php

この間に PHPスクリプト を記述することができる。例えば、ブレード内での変数の定義に使えます。

$counter = 0;
@endphp

④コメント

{{--
--}}

⑤CSRFフィールド

formタグの次に書く。

<form action="{{ \Route::currentRouteName() }}" method="post">
@csrf

⑥@extends、@section、@yield の関係

フレームのテンプレートでは、各画面の @section で定義される title、content を、@yield を使って呼び出します。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>@yield ('title')</title>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.1/dist/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fomantic-ui@2.9.0/dist/semantic.min.css">
<script src="https://cdn.jsdelivr.net/npm/fomantic-ui@2.9.0/dist/semantic.min.js"></script>
<livewire:styles />
</head>
<body>
<form action="{{\Route::currentRouteName()}}" method="post">
@csrf
<div class="ui container">
  @yield('content')
</div>
</form>
@stack ('css')
@stack ('scripts')
@stack ('dialogs')
<livewire:scripts />
</body>
</html>

各画面のテンプレートでは、@section の title、content に画面毎の内容を記述し、@extends を使ってフレームのテンプレートを呼び出します。

@extends ('frame')

@section ('title')
タイトル
@endsection

@section ('content')
インデックス
@endsection

⑦スタック

各画面のテンプレートで @push でスタックに処理を追加する。

@push ('scripts')
<script>
// テキストフォームでエンターキーでサブミットしてしまうのを回避する。
$(function() {
  $('input').on('keydown',e => !((13 === e.which) || (13 === e.keyCode)));
});

// 全てチェックする。
$('#check_all').click(() => {
  var target = (0 == $('.checks').length) ? '[type=checkbox]' : '.checks';
  $(target).prop('checked',true)
});

// チェックを外す。
$('#uncheck_all').click(() => {
  var target = (0 == $('.checks').length) ? '[type=checkbox]' : '.checks';
  $(target).prop('checked',false)
});

// アコーディオンの初期化
$('.ui.accordion').accordion();
</script>
@endpush

フレームのテンプレートでスタックから処理を取り出します。

@stack ('css')
@stack ('scripts')
@stack ('dialogs')
Scroll to Top