2012-05-16 15 views
6

Oyun 2.0'ı scala ile öğrenmeye çalışıyorum ama sanırım oyun için 2.0 sistem şablonunun nasıl çalıştığını tam olarak anlayamıyorum. Daha önce 1.2 oyununu kullandım ve # {include 'views/blah.html' /} öğesine eşdeğer bir şey arıyorum. Esasen tüm sayfalarda işlenen bir navbar yaratmak istiyorum.scala.html dosyaları oyunda dahil olmak üzere skal.html dosyaları

Esasen main.scala.html i var

ve benim index.scala.html içinde

@(title: String)(navbar: Html)(content: Html) 

<!DOCTYPE html> 

<html> 
    <head> 
    <title>@title</title> 
    <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")"> 
    <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")"> 
    <script src="@routes.Assets.at("javascripts/jquery-1.7.1.min.js")" type="text/javascript"></script> 
    </head> 
    <header> 
    This is my header 
    </header> 
    <section class="navbar">@navbar</section> 
    <section class="content">@content</section> 
    <footer> 
    This is my footer 
    </footer> 
: task.scala.html içinde

@navbar = { 
<h1>Index</h1> 
<ul> 
    <li> 
     <a [email protected]>Tasks</a> 
    </li> 
</ul> 
} 
@main("Home")(navbar){ 
    content 
} 

:

@(tasks: List[Task], taskForm: Form[String]) 
@import helper._ 
@main("Home") { 
<h1>Index</h1> 
<ul> 
    <li> 
     <a [email protected]>Tasks</a> 
    </li> 
</ul> 
} { 
    task code 
} 

Şimdi bu na dahil etmek için vbar sanki bu şekilde her sayfada bunu tekrarlamak zorundayım bu şekilde bu navbar'ı her sayfaya girmem gerekiyor. Her sayfada tüm navbar yazmadan bunu yapmanın bir yolu var mı?

Ben de

<h1>Index</h1> 
<ul> 
    <li> 
     <a [email protected]>Tasks</a> 
    </li> 
</ul> 

içeren bir navbar.scala.html dosyası oluşturma ve görünümler altında tasarruf çalıştılar

/sonra ben 'bildiren bir hata alıyorum @import views.navbar kullanarak ama sonra navbar görüşlerin üyesi olmadığını ithal '. Bu yardımcı olur eğer Eclipse Java EE IDE indigo içinde yazıyorum.

cevap

7

Dont içe ama sadece diyoruz:

@navbar() 
+0

i '@navbar' bu görüntüler kullanın: BaseScalaTemplate ([email protected]) yerine gerçek navbar.scala.html – Darbs

+0

arasında bize kodunuzu gösterebilir? – Somatik

+0

Oh evet muhtemelen muhtemelen parens eklemeniz gerekiyor. Cevabımı düzenledim. –

0

, başka görüşleri şablonuna şablona başka görünümleri dahil etmek Basit kullanarak çağrı: @views.html.[location].[location].[location]() [konum] sadece bir sonu olduğunu

Nerede yolunun aşağısında. örneğin

:

@views.html.users.interface() 

herhangi parametre almaz ise ifadesinin sonundaki "()" yani parantez koymak emin olun. "()" Olmadan şu şekilde bir hata mesajı alırsınız: "BaseScalaTemplate (play.api.templates ...)"

Şablonunuzun parametreleri varsa, bunları çağırdığınızda Bu:

@views.html.users.interface("name") 
İlgili konular