(gelöst) PHP innheralb von <script> Tags "richtig" ausführen?
Guten Abend!
Ich bin gerade dabei, die Daten eines MetaModels als Graphen darzustellen. Entlang der X-Achse haben wir mehrere Daten und auf der Y-Achse haben wir Preise. Beide Daten sind jeweils in zwei Arrays in einem Template gespeichert.
$arrayPrices enthält die Preise.
$arrayDates enthält die Daten.
Mithilfe von ChartJs habe ich einiges umgesetzt und auch bereits in Contao selbst- allerdings stoße ich gerade auf ein eigenartiges Problem:
Ich würde gerne mittels
PHP-Code:
<?php foreach ($arrayDates as $key => $value): ?>
<?php echo "'" . $value . "'" . ','?>
<?php endforeach; ?>
alle Werte der Daten kommagetrennt ausgeben- das sollte beispielsweise so aussehen:
Code:
'0.5',
'0.75',
'1',
'1.25',
'1.5',
Contao macht mir daraus allerdings viel lieber:
Code:
'<span class="text">0.5</span>',
'<span class="text"0.75</span>',
'<span class="text">1</span>',
'<span class="text">1.25</span>',
'<span class="text">1.5</span>',
Hier ein konkreter Ausschnitt aus dem Template:
Code:
...
<!-- Configure and render charts -->
<script>
var config_canvas= {
type: 'line',
data: {
labels: [
<?php foreach ($arrayDates as $key => $value): ?>
<?php echo "'" . $value . "'" . ','?>
<?php endforeach; ?>
],
datasets: [{
label: 'Leistung Serie',
borderColor: "#4e4e4e",
...
Mir ist aufgefallen, dass Contao das NUR innerhalb eines <script> Tags macht- ich vermute aus Sicherheitsgründen. Außerhalb davor / danach kann ich per PHP echo es einfach ausgeben, kein Problem.
Meine Frage ist daher: Wie bekomme ich die Werte hier sauber in mein Skript?
EDIT: Lösung
Liste der Anhänge anzeigen (Anzahl: 2)
Jetzt musste ich eine Menge Text wieder löschen, weil ich die Lösung gefunden habe (das Problem ist wie immer der User):
Jedes Attribut von jedem MetaModel hat ebenfalls ein eigenes Template- mein Datumsfeld hat beispielsweise
templates/mm_attr_timestamp.html5
Code:
<span class="text<?= $this->additional_class; ?>"><?= $this->parsedDate; ?></span>
Also habe ich das ganz einfach ersetzt durch:
templates/mm_attr_timestamp_CUSTOM_VALUES_ONLY.html5
Code:
<?= $this->parsedDate; ?>
Das gleiche Spiel nochmal für mein anderes Feld, da es einen anderen Attributstyp hat:
templates/mm_attr_text_CUSTOM_VALUES_ONLY.html5
Code:
<span class="text<?= $this->additional_class ?>"><?= $this->raw ?></span>
durch
Diese Templates jetzt nur noch in den Rendereinstellungen zuweisen und siehe da- wir haben anstatt:
Anhang 23266
Richtig schön:
Anhang 23267
Vielen Dank für das Anstoßen des richtigen Gedankenganges ;)