Ich möchte Daten von meinem Controller an ein JavaScript übergeben, das ein Google-Balkendiagramm verarbeitet.

Komponistin

$tmp = 6;
return view('pages.template', ['tmp' => $tmp]);

Von meinem template.blade.php aus rufe ich das Google Chart auf

<div id="chart_div"></div>

.js Datei:

var tmp = 6;
var tmp2 = parseInt('{!! $tmp !!}');

var data = google.visualization.arrayToDataTable([
    ['comment1', 'comment2'],
    ["- 6 days", tmp],
    ["- 5 days", tmp2],
    ["- 4 days", 31],
    ["- 3 days", 12],
    ["- 2 days", 10],
    ["- 1 day", 3],
    ["today", 4]

Der 2. Balken von Google-Bar-Chart ist leer .... Bildbeschreibung hier eingeben

Aber dort sollte meine Variable angezeigt werden.

Wie löse ich dieses Problem?

4
Timo 13 Aug. 2015 im 13:43

3 Antworten

Beste Antwort

Einfach ersetzen:

var tmp2 = parseInt('{!! $tmp !!}');

Durch :

var tmp2 = parseInt(<?php echo $tmp; ?>);

Und es sollte funktionieren.

2
Zakaria Acharki 13 Aug. 2015 im 11:14

Die Variable $tmp scheint in der Datei .js nicht erfolgreich analysiert worden zu sein. Warum fügst du den Code nicht in die .js Datei in template.blade.php ein?

-1
Eddy 13 Aug. 2015 im 11:09

Das hat bei mir funktioniert

<script type="text/javascript">

var tmp = {!! json_encode($tmp->toArray()) !!};
console.log(tmp);

</script>

In Ihrem Controller können Sie Folgendes tun

public function index()

{

$tmp = Tmp::get();

return view('tmp.index', compact('tmp'));

}
0
Nemo 30 Aug. 2019 im 08:58