2013-04-27 31 views
5

Tôi muốn sử dụng khối có thể sử dụng lại từ mẫu trong các mẫu khác của mình. Làm thế nào tôi có thể làm điều đó? Cụ thể hơn:Bao gồm các khối có thể tái sử dụng từ mẫu vào một mẫu khác

Tôi có một quan điểm mẫu/main.scala.html chứa thẻ này

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

một Tôi có một mẫu views/lỗi/notFound.scala.html nơi tôi muốn bao gồm các logo_header từ mẫu chính. Tôi cố gắng @ main.logo_header, hoặc @ main.logo_header() nhưng biên dịch luôn nói:

giá trị logo_header chưa là thành viên của đối tượng views.html.main

tôi luôn nhìn vào chính thức documentation nơi họ mô tả bao gồm, nhưng tôi không thể hiểu tại sao nó không hoạt động.

Trả lời

5

Bạn đã thực hiện điều gì đó hơi khác so với cách sử dụng được đề cập trong tài liệu. Trong tài liệu, thẻ tái sử dụng được khai báo trong tệp riêng của nó. Những gì bạn đang cố gắng làm là khai báo một hàm trợ giúp trong một mẫu khung nhìn và sau đó thử gọi nó từ một mẫu khác. Như đã đề cập trong this answer, một hàm chỉ hiển thị với mẫu chế độ xem mà nó được khai báo.

Những gì bạn cần làm là di chuyển đánh dấu tiêu đề logo của bạn ra thành tập tin riêng của mình:

views/_logo_header.scala.html

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

Sau đó tham khảo như sau:

lượt xem/main.scala.html

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

Tôi đã đặt tên tệp mới với dấu gạch dưới hàng đầu vì đây là quy ước đặt tên phổ biến đánh dấu tệp ra có chứa một đoạn mã HTML thay vì một tài liệu HTML đầy đủ.

Cuối cùng, tôi đã giả định rằng đoạn mã tiêu đề biểu trưng của bạn không cần thực hiện bất kỳ đối số nào. Nếu có, bạn có thể rắc trong một số Scala như đã đề cập trong tài liệu:

views/_logo_header.scala.html

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

views/main.scala.html

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

Vì vậy, về cơ bản, khi tôi cần các thành phần html có thể tái sử dụng (đầu trang, chân trang, biểu tượng) cho các mẫu, tôi phải tạo mẫu riêng cho mỗi mẫu? – Behnil

+0

@Behnil - Vâng, theo như tôi biết. – avik

+0

Cảm ơn @avik. Tôi có một câu hỏi cuối cùng. Thư mục views/tags có cách nào đó đặc biệt không? Hay họ chỉ chọn nó trong tài liệu? – Behnil

Các vấn đề liên quan