2. Rendering JSON && php in blade (ok)

https://viblo.asia/p/tap-13-blade-template-laravel-1VgZv1dRKAw

Nếu bạn truyền một mảng đến blade view và muốn render nó như một JSON để gán giá trị cho biến nào đó trong đoạn mã script. Thông thường với PHP, bạn sẽ:

<?php

echo '
    <script>
        var app = ' . json_encode($array) . ';
    </script>
';

Nhưng đối với Blade template Laravel thì cú pháp sẽ gọn đi rất nhiều. Thay vì gọi thủ công như thế thì ta có thể sử dụng cú pháp @json, nó sẽ nhận các tham số tương tự như json_encode.

<script>
    var app = @json($array);

    var app = @json($array, JSON_PRETTY_PRINT);
</script>

Nếu như bạn truyền @json trong một thuộc tính của thẻ thì nên để trong nó trong cặp dấu ''.

<tag attr='@json($array)'></tag>

PHP

resources\views\child.blade.php

@php
	echo '<pre>';
		var_export($array);
	echo '</pre>';
@endphp
<p>
    var app = @json($array);
</p>

routes\web.php

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function() {
		$array = [
			"Mot",
			"Hai"
		];
    return view('child')->with('array', $array);
});

Kết quả: http://blog.com/

Last updated