1
데이터 세트를 반복하는 경우 위젯에서 html을로드하는 가장 좋은 방법은 무엇입니까? 햄릿 파일yesod에서 햄릿 파일에 매개 변수가있는 위젯을로드 할 수 있습니까?
즉 햄릿 템플릿 만 햄릿 템플릿을 포함시킬 수
$forall Entity id val <- collection
^{myWidget (p1 val) (p2 val)}
데이터 세트를 반복하는 경우 위젯에서 html을로드하는 가장 좋은 방법은 무엇입니까? 햄릿 파일yesod에서 햄릿 파일에 매개 변수가있는 위젯을로드 할 수 있습니까?
즉 햄릿 템플릿 만 햄릿 템플릿을 포함시킬 수
$forall Entity id val <- collection
^{myWidget (p1 val) (p2 val)}
참고. 위젯을 삽입하려면 whamlet
을 사용하십시오.
또한 예 - 매개 변수를 위젯에 전달할 수 있습니다. 개념을 보여주는 예를 들어 스택 스크립트 :
#!/usr/bin/env stack
{- stack
--resolver lts-9.0
--install-ghc
runghc
--package yesod-core
--package yesod
--package shakespeare
-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
import Yesod
data App = App
mkYesod "App" [parseRoutes|
/HomeR GET
|]
instance Yesod App
data Person = Person { id :: Int, name :: String, email :: String } deriving (Show, Eq, Ord)
collections = [Person 1 "Sibi" "[email protected]", Person 2 "Michael" "[email protected]"]
whamlet1 :: Widget
whamlet1 = [whamlet| <p>hello
$forall Person _ pname pemail <- collections
^{whamlet2 pname pemail}
|]
whamlet2 :: String -> String -> Widget
whamlet2 pname pemail = [whamlet| <h1> #{pname} #{pemail} |]
getHomeR = defaultLayout $ do
setTitle "My Page Title"
toWidget [lucius| h1 { color: green; } |]
whamlet1
main = warp 3000 App
Yesod 책에 widgets chapter은 더 깊이를 설명합니다.
@Sibi에 감사드립니다. 그 해결책은 내가 바라는 것이 아니라 내가 해결할 수있는 방법입니다. :) – Yunis