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>
{{-- 省略 --}}