РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
11 of 1392 menu

Директива json

Директива json применяется в Blade-шаблонах для преобразования PHP-переменных в JSON-формат. Она принимает один параметр - переменную любого типа, которая может быть массивом, коллекцией, объектом или простым значением. Директива автоматически экранирует кавычки и специальные символы, что делает её безопасной для использования в атрибутах data или встроенных JavaScript-скриптах.

Синтаксис

@json($variable)

Пример

Давайте передадим массив с данными в представление и выведем его в формате JSON с помощью директивы json:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class UserController extends Controller { public function index() { $data = ['name' => 'John', 'age' => 30, 'city' => 'New York']; return view('user.profile', ['data' => $data]); } } ?>
<div data-user="@json($data)"> <script> const user = @json($data); console.log(user); </script> </div>

Результат выполнения кода в браузере:

<div data-user="{"name":"John","age":30,"city":"New York"}"> <script> const user = {"name":"John","age":30,"city":"New York"}; console.log(user); </script> </div>

Пример

Директива json также может быть использована для вывода коллекции моделей Eloquent:

<?php namespace AppHttpControllers; use AppModelsArticle; class ArticleController extends Controller { public function show() { $articles = Article::where('status', 'published')->get(); return view('articles.list', ['articles' => $articles]); } } ?>
<script> const articles = @json($articles); articles.forEach(article => { console.log(article.title); }); </script>

Результат выполнения кода в консоли браузера:

"article 1" "article 2" "article 3"

Пример

В отличие от использования функции json_encode с экранированием через e, директива json обеспечивает двойную безопасность, корректно обрабатывая все краевые случаи:

@php $data = ['key' => 'value "with quotes"', 'number' => 123, 'active' => true]; @endphp <script> const safe = @json($data); const unsafe = JSON.parse('<?php echo addslashes(json_encode($data)); ?>'); console.log(safe); </script>

Результат выполнения кода в консоли браузера:

{"key":"value \"with quotes\"","number":123,"active":true}

Смотрите также

  • директива echo,
    которая выводит данные с автоматическим экранированием
  • директива raw,
    которая выводит данные без экранирования
  • директива php,
    которая позволяет выполнять произвольный PHP-код в шаблоне
  • директива dump,
    которая выводит дамп переменной для отладки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить