Mam ogólny szablon w play 2.6
, który chcę przekazać w zmiennej liczbie HtmlContent
s. Mam zdefiniował template
takiego (w tym dorozumiane parametru mam w wypadku, który zmienia wszystko):Scala Play szablon vararg HtmlContent
@(foo: String)(content: Html*)(implicit bar: Bar)
Na stronie szablonu, to działa fine-- mogę wnikliwie content
z for
i uczynić ją jak ja chcieć. Jednak nie byłem w stanie wymyślić czystej metody wywoływania zmiennych argumentów z podstawowego szablonu.
przykład, mam widok o nazwie "Baz":
@(something: String)(implicit bar: Bar)
W nim, staram się wywołać template
z wieloma argumentami HTML. Próbowałem następujących czynności:
@template("fooString"){{123},{abc}}
and
@template("fooString")({123}, {abc})
and
@template("fooString"){{123}, {abc}})
i różne inne permutacje, ale wewnątrz wspornika otaczającej wydaje się interpretować dosłownie wszystko jako pojedynczy parametr w HtmlContent
vararg.
to jednak skończyło się pracując jako zamierzałem, przekazując wielokrotności HtmlContents
:
@template("fooString")(Html("123"), Html("abc"))
tak, że działa, i mogę korzystać z potrójną cytowany interpolowana ciąg za duży Html block-- ale wydaje jak powinno być czystsze sposób to zrobić, a interpolacja ciąg jest niebezpieczna, ponieważ nie robi ucieczki html.
Czy można to zrobić za pomocą dołączonej składni {
? Chciałbym dowiedzieć się więcej o tym, co faktycznie dzieje się na podstawowym poziomie, i jak gra analizuje i generuje HtmlContent w nawiasach.
Twój 'html (...) "podejście wygląda dość czysto i jednoznacznie. [Kod źródłowy Twirl] (https://github.com/playframework/twirl) może być jednym z miejsc, w których można spróbować jeszcze bardziej pogłębić swoje pytanie. – wwkudu
Jakieś komentarze na temat odpowiedzi, którą zamieściłem? –