Неожиданный идентификатор в Javascript, работающий с Laravel - PullRequest
0 голосов
/ 25 июня 2018

Я работаю с Laravel и внедряю менеджер тегов Google.Я помещаю объект в слой данных Google с событием.

<a href="javascript:void(0)"  class="btn btn-default"  id="step1" 
 onclick="dataLayer.push({
 @foreach(Cart::content() as $content)
@if($loop->first)
'id': '{{$content->rowId}}',
'affiliation':'Gazebo',                                          
'revenue':'{{Cart::total()}}',
@endif
@endforeach
'transactionProductts':[
 @foreach(Cart::content() as $cart)
     {
      'sku': '{{$cart->id}}',
       'price': '{{$cart->subtotal}}',
      'name':'{{$cart->name}}'
    }
    @if($loop->iteration != $loop->last)
    ,
    @endif
  @endforeach
 })">Continue.</a>

И после того, как он отрендерен, он выглядит так в источнике страницы

<a href="javascript:void(0)" class="btn btn-default" id="step1" onclick="dataLayer.push({
  "affiliation": "foo-bar",
  "id": "id1",
  "revenue": "146.96",
  "transactionProductts": [
    {
      "name": "Video1",
      "price": "2.99",
      "sku": "23409"
    },
    {
      "name": "Video2",
      "price": "3.99",
      "sku": "21598"
    },
    {
      "name": "Video 3",
      "price": "129.99",
      "sku": "23430"
    },
    {
      "name": "Mozart&#039;s Magic Flute Diaries ",
      "price": "2.99",
      "sku": "22370"
    }
  ]
})">Continue.</a>

Я думаю, что это мойпоследний условный оператор и добавление запятой, потому что он прекрасно работает, когда у меня нет запятой там, но мне нужно заключить в условный оператор, чтобы он не добавлял запятую в конце массива, и это дает мне «неожиданный идентификатор"ошибка

Любая помощь с благодарностью

1 Ответ

0 голосов
/ 25 июня 2018

Сначала создайте строку json и удалите запятую:

@php
$json = ''
foreach(Cart::content() as $idx => $content) {
    if ($idx === 0) {
        $json .= "id: ${content->rowId},";
        $json .= "affiliation:'Gazebo',";                                          
        $json .= "revenue: " . Cart::total() . ",";
    }
}

$json .= 'transactionProductts:[';

foreach(Cart::content() as $cart) {
    $json .= "{sku: ${cart->id},";
    $json .= "price: ${cart->subtotal,";
    $json .= "name: ${cart->name}},";
}

$final = trim($json, ',') . ']';

@endphp


onclick="dataLayer.push({ {{ $final }} })"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...