ショコラ
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')