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