課題解決
INSIGHT
情報・インサイト
【Laravel】PHPのクラスで定義された配列の定数をjavascriptで扱う方法
2020.07.08

LaravelのテンプレートエンジンであるbladeでHTMLファイルをコーディングするときに、
「配列で定義されたクラスの定数の添え字をjavascriptの変数にしたい」と考えることがあります。
しかし、bladeテンプレートでは
{{ }}
で記述された部分はPHPのコードだと認識されてしまいます。
例えばjavascriptでval[‘data’]という変数が存在したとします。その時
{{ConstClass::ary[ val['data'] ]}}
と記述してしまうと、「val[‘data’]」という変数は定義されていません、とエラーが返されてしまいます。
今回は、その解決策をご紹介いたします。
以下のような定数がクラスConstClassに定義されていることを想定します。
const fruits = [
"0" => "リンゴ",
"1" => "バナナ",
"2" => "スイカ",
];
jsで取得したIDから個々の名前を表示させたいとき、どうすればいいでしょうか。
この時、IDはjavascriptにおいてval[‘fruit_id’] で取得できるものとします。
ついつい
{{ConstClass::fruits[ val['fruit_id'] ]}}
と書きたくなりますが、先述したようにエラーが返されてしまいます。
そこで、定数そのものをjavascriptに渡してあげる、と、考えます。つまり
var fruits_ary = @json(ConstClass::fruits)
と記述します。つまり、以下のように記述できます。
fruits_ary[val['fruit_id']]
こうすることで、エラーなく表示することができます。