Edited at

【Laravel】Controllerで返したphpの配列をJavaScriptの配列に変換する


環境

laradock

(PHP - 7.2)

(Laravel - 5.7)


ポイント

・JSON_UNESCAPED_UNICODEを第2引数に指定してjson_encode()する

・{!! !!}で囲ってechoする


Controller


GirlsController.php

<?php

namespace App\Http\Controllers;

class GirlsController extends Controller
{
public function index()
{
$name = array('辻野あかり', '砂塚あきら', '夢見りあむ');
$kana = array('つじのあかり', 'すなづかあきら', 'ゆめみりあむ');
return view($viewName, compact('name', 'kana'));
}
}



route


web.php

Route::resource('girls', 'GirlsController');



blade


girls.blade.php

<script type="text/javascript">

//Unicode文字列にされるのを防ぐためJSON_UNESCAPED_UNICODEを第2引数にjson_encode()
//ダブルクオーテーションが&quot;に置き換わってしまうのを防ぐため{!! !!}で囲う
const names = {!!json_encode($name, JSON_UNESCAPED_UNICODE)!!}
const kana = {!!json_encode($kana, JSON_UNESCAPED_UNICODE)!!}


追記

※コメントで教えて頂きましたが、Laravel5.5からは@json()でできるようです。


girls.blade.php

<script type="text/javascript">

const names = @json($name);
const kana = @json($kana);