BeginnerEngineerBlog
中の人
中の人

【laravel blade】@sectionとかで変数とかを指定する

公開: 2024-02-20 22:51
更新: 2024-02-23 01:05
48
laravel6.x blade section lang
メモです

こんにちはー
中の人です

個人的なメモですがlaravelのbladeで@sectionとかで引数に変数とか指定する方法で少しハマったのでメモろうと思います
※ 紹介に利用しているプロジェクトはTutorialプロジェクトを利用しています


変数を指定


ブラウザのタブに表示されるタイトルを変数使って表示してみます

📁 Tutorial/blog/resources/views/layouts/app.blade.php

<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">


    <!-- CSRF Token -->
    <meta name="csrf-token" content="{{ csrf_token() }}">

{{--                                             👇 こいつを追加 --}}
    <title>{{ config('app.name', 'Laravel') }} | @yield('sub_title')</title>


    <!-- Scripts -->
    <script src="{{ asset('js/app.js') }}" defer></script>


    <!-- Fonts -->
    <link rel="dns-prefetch" href="//fonts.gstatic.com">
    <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">

{{-- 省略 --}}

📁 Tutorial/blog/resources/views/article/new.blade.php

@extends('layouts.app')
{{-- 👇 変数を定義 --}}
@php
    $sub_title = 'article new';
@endphp
{{--               👇 変数を指定 --}}
@section('sub_title', $sub_title)
@section('content')
    <form action="{{route('article.create')}}" method="post">
        @csrf
        <input type="hidden" name="id" value="{{$id ?? null}}">
        <div class="form-row">
            <div class="form-group col-sm-6">
                <label>Title</label>
                <input
                    name="title"
                    type="text"
                    value="{{old('title', $title ?? null)}}"
                    class="form-control
                    @error ('title') is-invalid @enderror"
                >

{{-- 省略 --}}

@phpで変数を定義していますが、controllerで渡す変数も同じです

これの実行結果は


Tutorial | article new

変数で指定した文字が表示されてます


__ヘルパ関数で指定


__ヘルパ関数は、__('hogehuba')のやつです
「__ヘルパ関数」って言うらしいです(発音はわからん)

📁 Tutorial/blog/resources/views/article/new.blade.php

@extends('layouts.app')
{{--                    👇 __ヘルパ関数で指定 --}}
@section('sub_title', __('messages.artice_new_sub_title'))
@section('content')
    <form action="{{route('article.create')}}" method="post">
        @csrf
        <input type="hidden" name="id" value="{{$id ?? null}}">
        <div class="form-row">
            <div class="form-group col-sm-6">
                <label>Title</label>
                <input
                    name="title"
                    type="text"
                    value="{{old('title', $title ?? null)}}"
                    class="form-control
                    @error ('title') is-invalid @enderror"
                >

{{-- 省略 --}}

📁 Tutorial/blog/resources/lang/en/messages.php

<?php

return [
    'artice_new_sub_title' => 'article new!',
];

※ langの「en」はご自身の環境に合わせてください。多分「ja」が大半だと思います

messages.phpを指定のパスに作成します

この実行結果は


こうなります


終わりに


ハマったのは、__ヘルパ関数使おうとして

📁 Tutorial/blog/resources/views/article/new.blade.php

@extends('layouts.app')
{{--                    👇 最初こんな感じで書いた --}}
@section('sub_title', '{{__("messages.artice_new_sub_title")}}')
@section('content')
    <form action="{{route('article.create')}}" method="post">
        @csrf
        <input type="hidden" name="id" value="{{$id ?? null}}">
        <div class="form-row">
            <div class="form-group col-sm-6">
                <label>Title</label>
                <input
                    name="title"
                    type="text"
                    value="{{old('title', $title ?? null)}}"
                    class="form-control
                    @error ('title') is-invalid @enderror"
                >

{{-- 省略 --}}

{{}}エコー文て言うらしいんですけど、まぁこんな感じで{{}}で__ヘルパ使おうとしたら、



こんな感じになったんですよね

エスケープを試みるphpのコードが表示されとるでと思って、若干ハマりました

ちなみに、

"{{__('messages.artice_new_sub_title')}}"

シングルコーテーションとダブルコーテーションの位置を反対にしても同じくコードが表示されます

'{{__('messages.artice_new_sub_title')}}'

もしくは

"{{__("messages.artice_new_sub_title")}}"

シングル、ダブルコーテーションで統一するとsyntaxエラーになります

おやすみなさい
0
0
0
0
通信エラーが発生しました。
似たような記事