[PHP][Laravel] リダイレクトでbladeのjsに配列を渡す

バージョン

Laravel 5.7

概要

バリデーションエラーなどでリダイレクトで元の画面に戻した際に 入力データ以外にPHP側で用意した配列情報をbladeのJavascriptに渡す。

コード

■TestController.php

    // バリデータ
    if ($validator->fails()) {
        // 渡すデータ配列
        $testdata[0]['id'] = 10;
        $testdata[0]['name'] = 'taro';
        $testdata[1]['id'] = 20;
        $testdata[1]['name'] = 'hanako';
        // 元のページにリダイレクト
        return redirect()->back()->withErrors($validator)->withInput()->with('testdata', $testdata);
    }

withでセッションに配列情報をセット。

■Test.blade.php

<script>
@if (Session::has('testdata'))
    var data = @json(Session::get('testdata'));
    Object.keys(data).forEach(function (key) {
        console.log(data[key].id + ":" + data[key].name);
    });
@endif
</script>

セッションから取得した配列情報を@jsonで受け取る。



PHPフレームワーク Laravel入門

PHPフレームワーク Laravel入門