2013-04-27 12 views
5

Başka şablonlarda bir şablondan yeniden kullanılabilir bir blok kullanmak istiyorum. Bunu nasıl yapabilirim? Daha spesifik olarak:Yeniden kullanılabilir blokları bir şablondan başka bir şablona ekleme

Ben bu etiketi

@logo_header = { 
    <div id="logo-container"> 
     ... 
    </div> 
} 

içeren bir şablon görüntüleme/main.scala.html sahip bir başka şablon görüntüleme/hatalar/isterim notFound.scala.html logo_header var içerecek şekilde ana şablondan etiket. Ben @ main.logo_header veya @ main.logo_header deneyin() ancak derleme hep der ki:

değer logo_header ben baktım

views.html.main nesnenin üye değildir Resmi documentation da dahil olmak üzere, ancak neden işe yaramadığını anlayamıyorum.

cevap

5

Belgelerde belirtilen kullanımdan biraz farklı bir şey yaptınız. Dokümantasyonda, yeniden kullanılabilir etiket kendi dosyasında bildirilmiştir. Yapmaya çalıştığınız şey, bir görünüm şablonunda bir yardımcı işlevi bildirmek ve daha sonra onu başka bir şablondan çağırmaya çalışmaktır. this answer'da belirtildiği gibi, bir işlev yalnızca bildirildiği görünüm şablonunda görülebilir. aşağıdaki gibi

görüntüleme/_logo_header.scala.html

<div id="logo-container"> 
    ... 
</div> 

Sonra ona başvuru:

yapmanız gerekenler

kendi dosyasına aktarır logo başlık işaretlemeyi taşımaktır

views/main.scala.html

<html> 
    ... 
    _logo_header 
    ... 
</html> 

Yeni dosyaya, tam bir HTML belgesi yerine HTML snippet'ini içeren dosyayı işaretleyen yaygın bir adlandırma kuralı olduğundan, önde gelen alt çizgi içeren bir ad verdim.

Son olarak, logo başlık snippet'inin herhangi bir bağımsız değişkene gerek duymadığını varsaydım. Eğer varsa belgelerinde belirtildiği gibi, bazı Scala serpin:

görüntüleme/_logo_header.scala.html

@(arg1: String, arg2: String) 
<div id="logo-container"> 
    ... 
</div> 

görüntüleme/main.scala.html

<html> 
    ... 
    _logo_header("foo", "bar") 
    ... 
</html> 
+0

Temel olarak, şablonlar için yeniden kullanılabilir html bileşenlerine (üstbilgiler, altbilgiler, logolar) ihtiyacım olduğunda, her biri için kendi şablonunu oluşturmam gerekir. – Behnil

+0

@Behnil - Evet, bildiğim kadarıyla. – avik

+0

Teşekkürler @avik. Son bir sorum var. Görünümler/etiketler klasörü bir şekilde özel mi? Yoksa sadece belgelerde seçtiler mi? – Behnil

İlgili konular