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']]

こうすることで、エラーなく表示することができます。

WORKS

導入事例

ウィズテクノロジーは大阪を拠点に、システム開発の分野で20年の実績を持つパートナー企業です。
業務効率化やDX支援など、さまざまな課題にワンストップで対応。
経験豊富なエンジニアが、企業の成長を技術面からしっかりサポートします。

導入事例一覧を見る
導入事例一覧を見る

RECRUIT

採用情報

未来に、価値ある選択を。

All WhizzTechnologyは、期待を超える価値をともにつくり、より良い未来へ導く仲間を募集しています。