2017-05-10 2 views
1

Ich möchte überprüfen, ob das Konfigurations-Array in den Einstellungen vorhanden ist und, falls vorhanden, es als Argument an eine partielle übergeben. Wenn es nicht existiert, übergeben Sie die Standardkonfiguration an diesen Teil.TYPO3 Fluid dynamische Variable Teil in Inline wenn Bedingung

Mein Problem ist, dass ich bin stecken in if-Zustand, in dem die Überprüfung durchgeführt werden muss (then-else unten vereinfacht):

{f:if(condition: settings.media.responsive{f:count(subject: records)}, then: 'true', else: 'false')} 

Ein solcher Code von Flüssigkeit nicht analysiert wird und wird einfach wie auf der Seite ausgegeben. jedoch ohne dynamischen Teil funktioniert es perfekt:

{f:if(condition: settings.media.responsive1, then: 'true', else: 'false')} 

Ausgänge true.

Ich habe alle möglichen Kombinationen ausprobiert: mit einfachen Anführungszeichen und/oder geschweiften Klammern um den gesamten Zustand, sowie das gleiche innerhalb f:count(subject), aber fand keinen Weg, um es zum Laufen zu bringen.

versucht Additionaly v:variable.get von VHS-Erweiterung, aber auch ohne Erfolg:

{f:if(condition: {v:variable.get(name: 'settings.media.responsive{f:count(subject: records)}')}, then: 'true', else: 'false')} 

Der obige Code immer in true führt.

Wichtige Anmerkung: settings.media.responsive[number] enthält Reihe von Einstellungen, so durch sie in condition mit einfachen Anführungszeichen umgeben zu String gecastet nicht möglich ist.

Antwort

1

Wenn Sie die Flüssigkeit Motor Bibliothek verwenden:

{records -> f:variable(name: 'count')} 
{f:if(condition: '{f:count(subject: \'{settings.media.responsive{count}}\')}', then: 'true', else: 'false')} 

Oder wenn Sie VHS wollen:

{f:if(condition: '{v:variable.get(name: \'settings.media.responsive{f:count(subject: records)}\') -> f:count()}', then: 'true', else: 'false')} 
+0

Das Problem ist, dass ich nicht werfen kann 'settings.media.responsive [ Nummer] 'zu sring, weil es ein Array von Einstellungen enthält. Und die Umbruchbedingung in einfachen Anführungszeichen ergibt '# 1476107295: PHP Warnung: htmlspecialchars() erwartet, dass Parameter 1 ein String ist, ein Array in /path/vendor/typo3fluid/fluid/src/Core/Parser/SyntaxTree/EscapingNode.php angegeben ist 44' –

+1

Beispiel aktualisiert, um die neuen Informationen zu reflektieren, dass Ihre dynamisch benannte Einstellung selbst ein Array ist. Die Bedingung zählt nun das Array, das sich in der dynamischen Variablenreferenz befindet, und tut 'wahr', wenn count> 0 ist. FYI, das Beispiel ist nullsicher. Wenn also die dynamische Referenz null zurückgibt, werden keine schlimmen Dinge passieren löst aus). –

+0

Danke, jetzt funktioniert der VHS-Part, aber der pure Fluid-Weg bringt mich immer 'wahr'. Das Problem ist jedoch gelöst, daher wird die Antwort akzeptiert. –

Verwandte Themen