Wie würde ich die Standardkonfiguration von Template Toolkit in einer Dancer2-Site ändern, um Template::Stash::AutoEscaping zu verwenden?Wie konfiguriere ich Dancer2 und Template Toolkit für die Verwendung eines anderen Stash-Moduls?
Antwort
Sie können natürlich keinen Perl-Code schreiben, der ein neues Objekt in Ihrer Konfigurationsdatei erstellt. Stattdessen würde ich die Klasse Dancer2 :: Template :: TemplateToolkit ableiten, die Änderungen dort vornehmen und diese stattdessen verwenden.
Wenn Sie den Code oder D2::T::TT betrachten, können Sie sehen, dass es das Objekt $tt
in der Methode _build_engine
erstellt und zurückgibt. Wenn Sie dies in eine around
Ihrer Unterklasse einfügen, können Sie sie greifen und die Änderungen vornehmen.
package Dancer2::Template::TemplateToolkit::AutoEscaping;
use Moo;
use Template::Stash::AutoEscaping;
extends 'Dancer2::Template::TemplateToolkit';
around '_build_engine' => sub {
my $orig = shift;
my $self = shift;
my $tt = $self->$orig(@_);
# replace the stash object
$tt->service->context->{STASH} = Template::Stash::AutoEscaping->new;
return $tt;
};
1;
Dies ist ein bisschen ein hässlicher Hack und in die Interna einer Klasse ist wühlen nie eine gute Idee, aber dann Template::Context bietet keine Möglichkeit, die stash
Objekt zu ändern. Die Methode ->stash
ist nur ein Lesegerät und kann nur zur Laufzeit gesetzt werden.
Sie können dann Ihre neue Unterklasse in Ihrer Konfigurationsdatei anstelle von template_toolkit
verwenden.
engines:
template:
TemplateToolkit::AutoEscaping:
start_tag: '<%'
end_tag: '%>'
Beachten Sie, dass dies wird Ihnen jede Konfiguration machen verlieren Sie die STASH
in Ihrer Konfigurationsdatei hinzugefügt haben könnte. Sie müssten die Konfiguration explizit in Ihrem Wrapper erfassen, die STASH
herausfiltern, wenn es eine gibt, und sie an die neue new
weiterleiten. Ich werde das als eine Übung für den Leser verlassen.
- 1. Wie kann ich die Template-Leistung in Template :: Toolkit profilieren?
- 2. Wie konfiguriere ich Owin für die Verwendung eines benutzerdefinierten AuthenticationHandler?
- 3. Ergebnis der Anfrage nicht in Template Toolkit
- 4. Wo finde ich das 'Advanced Web Toolkit' für Template Toolkit?
- 5. Template-Toolkit für und IF Verhalten
- 6. Wie konfiguriere ich reactor-netty für die Verwendung von SSL?
- 7. Erstellen eines gruppierte Ausgabe Template-Toolkit
- 8. Konfigurieren von Template :: Toolkit in Dancer2's config.yml (Trimmen von Leerzeichen)
- 9. Wie können Template :: Toolkit-Makros eingebunden werden?
- 10. Wie mehr Verbindungen zu Dancer2
- 11. Wie konfiguriere ich das Google BigQuery-Befehlszeilentool für die Verwendung eines Dienstkontos?
- 12. Wie kann ich WRAPPER in einer Template Toolkit-Vorlagendatei überschreiben?
- 13. Mojolicious :: Lite mit Template Toolkit
- 14. Catalyst Template :: Toolkit Render-Ausgabe
- 15. Dancer2 Authentifizierung
- 16. Wie bekomme ich eine Zufallszahl im Template Toolkit?
- 17. Wie bekomme ich den Template-Parameter eines Template-Template-Parameters?
- 18. Wie konfiguriere ich die Nummernlokalisierung für die Knockout-Validierung?
- 19. Template :: Toolkit nicht auswerten Variable als Zeichenfolge
- 20. Kann ich die Template-Vererbung in einer Vorlage einrichten? (Template Toolkit)
- 21. Wie konfiguriere ich die Annotation [Authorize] zur Verwendung von Enum?
- 22. Wie konfiguriere ich log4j.properties für SpringJUnit4ClassRunner?
- 23. Wie konfiguriere ich Google Cloud Datalab für die Verwendung von Grafikprozessoren für TensorFlow?
- 24. Flucht HTML standardmäßig in Template Toolkit
- 25. Verwendung eines anderen Servicevertrags für DotNetOpenAuth
- 26. Wie konfiguriere ich die Protokollierung für ein Grails-Plugin?
- 27. Wie konfiguriere ich spacemacs für Python 3?
- 28. Wie konfiguriere ich log4net für mySQL?
- 29. Wie konfiguriere ich die Sicherungsstrategie (append) für die angleToMany Association?
- 30. So erhalten Sie Text Template Transformation Toolkit