Laravel PHP 三項演算子の戻り値部分の記載で苦労した
目的
- Laravelのbladeファイルの記載で三項演算子を用いて「文字列+DBのデータ」を表示分岐していたところ非常に苦労したのでメモとしてまとめる
実施環境
- ハードウェア環境
- ハードウェア環境
項目 | 情報 |
---|---|
OS | macOS Catalina(10.15.5) |
ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
プロセッサ | 2 GHz クアッドコアIntel Core i5 |
メモリ | 32 GB 3733 MHz LPDDR4 |
グラフィックス | Intel Iris Plus Graphics 1536 MB |
- ソフトウェア環境
項目 | 情報 | 備考 |
---|---|---|
PHP バージョン | 7.4.8 | Homebrewを用いてこちらの方法で導入→Mac HomebrewでPHPをインストールする |
Laravel バージョン | 8.6.0 | commposerを用いてこちらの方法で導入→Mac Laravelの環境構築を行う |
MySQLバージョン | 8.0.19 for osx10.13 on x86_64 | Homwbrewを用いてこちらの方法で導入→Mac HomebrewでMySQLをインストールする |
問題箇所
-
下記のように記載し三項演算子の真の部分にデータを入れ込みたかった。
@inject('ContentService', 'App\Services\ContentsService')
<p>{{真偽判断の式 !== 0 ? 'コンテンツの数は{{$ContentService->getContent(Auth::id())}}件です' : 'コンテンツはありません'}}</p>
簡単に解説すると「真偽判断の式」が真のときのみp要素で「コンテンツの数は〇〇件です」(〇〇はDBから認証中ユーザIDを引数に取得したデータ)のように表示したかった。
中括弧が不足している旨のエラーが出て当該ページを表示する事ができなかった。
原因
- 単純明快な原因である。文字列連結がうまくできていないだけだった。
-
本来PHPで文字列を連結するときは下記のように.
を使用する。
//「おはようございます」と出力される
echo 'おはよう' . 'ございます'
-
エラーが出た箇所は下記の部分である。
'コンテンツの数は{{$ContentService->getContent(Auth::id())}}件です'
-
落ち着いて見るとエラーが出るのは当たり前である。文字列部分とデータ部分の連結部分似誤りがある。正しく記載すると下記のようになる。
'コンテンツの数は' . $ContentService->getContent(Auth::id()) . '件です'
-
上記の内容を踏まえてp要素部分を正しく記載する。
@inject('ContentService', 'App\Services\ContentsService')
<p>{{真偽判断の式 !== 0 ? 'コンテンツの数は' . $ContentService->getContent(Auth::id()) . '件です' : 'コンテンツはありません'}}</p>
下記のように記載し三項演算子の真の部分にデータを入れ込みたかった。
@inject('ContentService', 'App\Services\ContentsService')
<p>{{真偽判断の式 !== 0 ? 'コンテンツの数は{{$ContentService->getContent(Auth::id())}}件です' : 'コンテンツはありません'}}</p>
簡単に解説すると「真偽判断の式」が真のときのみp要素で「コンテンツの数は〇〇件です」(〇〇はDBから認証中ユーザIDを引数に取得したデータ)のように表示したかった。
中括弧が不足している旨のエラーが出て当該ページを表示する事ができなかった。
- 単純明快な原因である。文字列連結がうまくできていないだけだった。
-
本来PHPで文字列を連結するときは下記のように
.
を使用する。//「おはようございます」と出力される echo 'おはよう' . 'ございます'
-
エラーが出た箇所は下記の部分である。
'コンテンツの数は{{$ContentService->getContent(Auth::id())}}件です'
-
落ち着いて見るとエラーが出るのは当たり前である。文字列部分とデータ部分の連結部分似誤りがある。正しく記載すると下記のようになる。
'コンテンツの数は' . $ContentService->getContent(Auth::id()) . '件です'
-
上記の内容を踏まえてp要素部分を正しく記載する。
@inject('ContentService', 'App\Services\ContentsService') <p>{{真偽判断の式 !== 0 ? 'コンテンツの数は' . $ContentService->getContent(Auth::id()) . '件です' : 'コンテンツはありません'}}</p>
Author And Source
この問題について(Laravel PHP 三項演算子の戻り値部分の記載で苦労した), 我々は、より多くの情報をここで見つけました https://qiita.com/miriwo/items/7de73e6bfbdee060b849著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .