Директива @js
Директива @js применяется в Blade-шаблонах для передачи данных из PHP в JavaScript. Она преобразует переданную переменную в JSON-строку, экранирует специальные символы и возвращает готовый для вставки в JavaScript-код результат. Директива принимает один параметр - переменную, которую необходимо преобразовать. Если переменная является массивом или объектом, она будет рекурсивно преобразована в JSON.
Синтаксис
@js($variable)
Пример
Давайте преобразуем простую строку для использования в JavaScript:
<script>
const message = @js($message);
console.log(message);
</script>
<?php
namespace AppHttpControllers;
use IlluminateSupportFacadesView;
class Controller
{
public function index()
{
$message = 'Hello, world!';
return view('index', ['message' => $message]);
}
}
?>
Пример
Давайте преобразуем массив данных для передачи в JavaScript:
<script>
const users = @js($users);
users.forEach(user => {
console.log(user.name);
});
</script>
<?php
namespace AppHttpControllers;
use IlluminateSupportFacadesView;
class Controller
{
public function index()
{
$users = [
['name' => 'John', 'age' => 25],
['name' => 'Jane', 'age' => 30],
['name' => 'Bob', 'age' => 22]
];
return view('index', ['users' => $users]);
}
}
?>
Пример
Давайте передадим данные модели Eloquent в JavaScript:
<script>
const article = @js($article);
document.getElementById('title').textContent = article.title;
document.getElementById('content').textContent = article.content;
</script>
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use IlluminateSupportFacadesView;
class Controller
{
public function index()
{
$article = Article::where('id', 1)->first();
return view('index', ['article' => $article]);
}
}
?>
Пример
Давайте передадим коллекцию моделей в JavaScript:
<script>
const articles = @js($articles);
articles.forEach(article => {
console.log(article.id + ': ' + article.title);
});
</script>
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use IlluminateSupportFacadesView;
class Controller
{
public function index()
{
$articles = Article::where('status', 'published')->get();
return view('index', ['articles' => $articles]);
}
}
?>