Wie kann ich {{app.user}} in Javascript eingeben?
für jetzt mache ich einen block wie;
<script type="text/javascript">
var app_name = '{{ app_name }}';
var app_url= '{{ app_url }}';
var app_description= '{{ app_description }}';
var app_email= '{{ app_email }}';
var app_title= '{{ app_title }}';
var app_dominio= '{{ app_dominio }}';
var env = '{{ app.environment }}';
</script>
wo diese Parameter in config.yml eingestellt werden
Ich verstehe nicht, was genau Ihr Problem mit der von Ihnen gewählten Lösung ist, es sollte gut mit {{app.user}} funktionieren, mit der Ausnahme, dass app.user ein Objekt ist. Sie sollten also eine toArray-Funktion in Ihrem Benutzer haben und Folgendes aufrufen:
app_user = {{ app.user.toArray|json_encode() }};
Oder rufen Sie jeden Parameter des Benutzers wie {{app.user.id}} auf.
Dokumentation: https://twig.sensiolabs.org/doc/filters/json_encode.html
Sie sollten json_encode für Ihre Variablen oben verwenden. Wenn Sie ein Zitat in einen String einfügen, wird Ihr Javascript beschädigt.
Beispiel für das Profil:
<script type="text/javascript">
nickname = {{ profile.nickname|json_encode() }}; // Nickname will be a string
// 2nd solution if you have more informations related to profile
profile = {
nickname: {{ profile.nickname|json_encode() }},
lastname: {{ profile.lastname|json_encode() }}
};
// Profile is now an object with a nickname property.
// use profile.nickname on your javascripts
</script>
Die akzeptierte Lösung funktioniert nicht mehr (mehr?), Da die Ausgänge automatisch mit einem Zweig versehen werden und der gesamte JSON-Code "
mit "
; geändert wird.
Äquivalent müsste jetzt den raw
-Filter verwenden:
<script type="text/javascript">
nickname = {{ profile.nickname|json_encode()|raw }}; // Nickname will be a string
// 2nd solution if you have more informations related to profile
profile = {
nickname: {{ profile.nickname|json_encode()|raw }},
lastname: {{ profile.lastname|json_encode()|raw }}
};
// Profile is now an object with a nickname property.
// use profile.nickname on your javascripts
</script>
Allerdings kann das direkte Drucken des rohen JSON in das Javascript einige Probleme verursachen.
<script>
var myvar = {{ '{"test": "</script>"}'|raw }};
</script>
Das </script>
-Tag in der JSON wird vom HTML-Parser interpretiert, was zu einem fehlerhaften Skript führt.
Der wirklich korrekte Weg, dies zu tun, wäre eher, den JSON als eine Escape-Zeichenfolge zu drucken und ihn dann im Skript js zu parsen:
<script>
var myvar = JSON.parse('{{ '{"test": "</script>"}'|e('js') }}');
</script>
Versuche dies:
var title = '{{ 'My Daily Activities'|trans({}, 'general') }}';
mit zusätzlicher Apostrophie
Verwenden Sie ein Attribut oder ein beliebiges Tag
beispiel: <span profile="{{ profile.nickname }}"></span>