2
0
記事投稿キャンペーン 「2024年!初アウトプットをしよう」

【Laravel10】変数展開の際に気をつけること(エラー対処:syntax error, unexpected token)

Posted at

Laravelのビューファイル(拡張子「.blade.php」)にif文を記述したところ、構文エラーが発生するなどの問題が発生してしまいました。
初歩的な内容ではありますが、対処方法の備忘録として作成した記事です。

問題

  • 「syntax error, unexpected token "<"」というエラーが発生。
  • 記述した関数がそのままブラウザに表示される。

エラー発生時のコード

※$items:itemsテーブルから取得したデータ。

resources\views\item\example.blade.php
                        {{-- 省略 --}}
                        <tbody>
                            @foreach ($items as $item)
                                <tr>
                                    <td>{{ $item->id }}</td>
                                    <td><a href="items/detail/{{ $item->id }}">
                                        @if(mb_strlen({{ $item->name }})  > 10 )
                                            mb_substr({{ $item->name }}, 0, 10).'……' 
                                        @else
                                            {{$item->name}} 
                                        @endif
                                    </a></td>
                                    {{-- 省略 --}}
                                </tr>
                            @endforeach
                        </tbody>
                        {{-- 省略 --}}

原因

  • 二重中括弧(二重波括弧)を余分に記述していた。
  • 変数展開のために二重中括弧で囲んだ箇所があったが、囲む位置を間違えていた。

修正後のコード

  • if文の条件部分から二重中括弧を削除
       ⇒エラーが発生しなくなりました。
  • 二重中括弧で囲む箇所を修正
      修正前:【mb_substr({{ $item->name }}, 0, 10).'……'】
      修正後:【{{mb_substr( $item->name, 0, 10).'……' }}】
       ⇒期待通りに表示されるようになりました。
resources\views\item\example.blade.php
                        {{-- 省略 --}}
                        <tbody>
                            @foreach ($items as $item)
                                <tr>
                                    <td>{{ $item->id }}</td>
                                    <td><a href="items/detail/{{ $item->id }}">
                                        @if(mb_strlen( $item->name )  > 10 )
                                        {{mb_substr( $item->name, 0, 10).'……' }}
                                        @else
                                            {{$item->name}} 
                                        @endif
                                    </a></td>
                                    {{-- 省略 --}}
                                </tr>
                            @endforeach
                        </tbody>
                        {{-- 省略 --}}

参考

readouble Laravel 10.x Bladeテンプレート

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0