Tôi hiện đang thử nghiệm với Yesod bằng cách theo dõi tutorial on the Yesod Wiki.Liên kết đến tệp tĩnh từ Ấp
Trước tiên tôi tạo ra một ứng dụng Yesod sử dụng yesod init
, và tạo ra một handler gốc mà ám một tập tin phụ tùng gọi là homepage
:
getRootR = do
mu <- maybeAuth
defaultLayout $ do
h2id <- lift newIdent
setTitle "Home"
addWidget $(widgetFile "homepage")
Tôi có một file ảnh trong thư mục gọi tĩnh static/img/logo.png
Sau khi chạm Settings/staticFiles.hs
, tôi đã quản lý thành công liên kết tệp này từ default-layout.hamlet
qua
<img [email protected]{StaticR img_logo_png}
Vấn đề xảy ra bây giờ tôi muốn bao gồm tệp tĩnh này trong tiện ích homepage
của mình, sử dụng chính xác cùng một dòng mã. Các lỗi sau đây xảy ra ở biên soạn:
Handler/Root.hs:19:21:
Not in scope: `img_logo_png'
In the result of the splice:
$(widgetFile "homepage")
To see what the splice expanded to, use -ddump-splices
In the first argument of `addWidget', namely
`$(widgetFile "homepage")'
In the expression: addWidget ($(widgetFile "homepage"))
Vì vậy, câu hỏi của tôi là: làm cách nào để liên kết các tài nguyên tĩnh trong widget định nghĩa với widgetFile
, và tại sao nó hành xử khác nhau trong các mẫu bố trí mặc định?