Я пытаюсь сделать что-то похожее на это, где для элемента в списке строк, у меня есть флажок рядом с ним, и я выясняю, какой флажок установлен или нет. Используя примеры из Интернета, я смог запустить пример
{-# LANGUAGE OverloadedStrings #-}
import Data.Monoid
import Data.String
import Data.List
import qualified Data.Text as T
import Web.Spock.Safe
import Web.Spock.Digestive
import Text.Blaze (ToMarkup(..))
import Text.Blaze.Html5 hiding (html, param, main)
import qualified Text.Blaze.Html5 as H
import Text.Blaze.Html.Renderer.Utf8 (renderHtml)
import Text.Digestive
import Text.Digestive.Blaze.Html5
import System.Directory
import Control.Monad.IO.Class
import Control.Monad (forM_)
gen :: Html -> [Html] -> Html
gen title elts = H.html $ do
H.head $
H.title title
H.body $
H.ul $ mapM_ H.li elts
data CheckBox = CheckBox { postTitle :: T.Text }
checkboxForm = CheckBox
<$> "title" .: Text.Digestive.text Nothing
renderForm :: View Html -> Html
renderForm v = do
Text.Digestive.Blaze.Html5.form v "POST" $ do
H.p $ do
Text.Digestive.Blaze.Html5.label "title" v "Post title: "
inputText "text" v
inputSubmit "Submit Post"
main :: IO ()
main =
runSpock 8080 $ spockT Prelude.id $ do
get root $ do
listing <- liftIO $ getDirectoryContents "/home/hasenov/mydir"
let filteredListing = filter (\l -> not $ isPrefixOf "." l) listing
(view, result) <- runForm "checkboxForm" checkboxForm
case result of
Nothing -> lazyBytes $ renderHtml (renderForm view)
Just newCheckbox -> lazyBytes $ renderHtml (renderForm view)
-- lazyBytes $ renderHtml (gen "My Blog" (Data.List.map fromString filteredListing))
-- get ("hello" <//> var) $ \name ->
-- text ("Hello " <> name <> "!")
Однако в функции renderForm, когда я изменяю inputText на что-то вроде inputCheckbox "True", я получаю сообщение об ошибке True не существует. Я не могу найти пример, где используется inputCheckbox, я надеялся, что кто-нибудь поможет мне адаптировать filteredString, чтобы рядом с ним отображались флажки, и я мог правильно запустить форму. Кроме того, в предыдущей ссылке, которую я разместил, я не знаю, какая функция inputCheckBox, так как я смог найти только inputCheckbox. Возможно, это устаревшая функция?
import
заявления? Это бы очень помогло. - person ErikR   schedule 26.10.2015