Laravel - Как передать переменную php в функцию javascript из блейд-файла - PullRequest
0 голосов
/ 24 октября 2018

У меня есть html-элемент внутри моего блейд-файла:

<input id="check_all" onclick="toggleCheckOrders('$orderFormObject', ' $count')" name="check_all" type="checkbox" value="1">

Обработчику onclick назначена функция JavaScript toggleCheckOrders, которая принимает два параметра, которые являются объектами, которые были переданы из контроллера в шаблон блейда.Когда я делаю это, он просто обрабатывает их как строки внутри функции javascript, и есть ли способ передать их при сохранении соответствующих им типов данных?

Ответы [ 3 ]

0 голосов
/ 24 октября 2018

Вот маленький помощник, который я написал для себя:

Я добавил это в свой AppServiceProvider.php:

 Blade::directive('jsvar', function ($expression) {
     return "<?php echo json_encode($expression); ?>";
 });

Это позволит вам сделать:

<input id="check_all" onclick="toggleCheckOrders(@jsvar($orderFormObject), @jsvar($count))" name="check_all" type="checkbox" value="1">

Если вы часто передаете переменные PHP в JavaScript, я настоятельно рекомендую этот подход.

0 голосов
/ 24 октября 2018

Вы можете просто

<input id="check_all" onclick="toggleCheckOrders({{json_encode($orderFormObject)}}, {{ json_encode($count)}})" name="check_all" type="checkbox" value="1">

сделать так, чтобы ассоциативный массив был приведен как объект в JavaScript

0 голосов
/ 24 октября 2018

Вы должны использовать:

<input id="check_all" onclick="toggleCheckOrders('{{ $orderFormObject }}', ' {{ $count }}')" name="check_all" type="checkbox" value="1">

В Blade вы используете {{ ... }} для вывода значения переменной

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...