Snap: получение данных формы и if

Кажется, я не могу понять, как получить данные формы с помощью heist. Я только начал изучать веб-фреймворки Haskell, но документация немного... скудна, если не сказать больше. В учебнике по тощим ограблениям на веб-сайте Snap нет упоминания о формах. Итак, учитывая простую html-форму, как мне получить данные формы для обработки в моей функции-обработчике? Может ли кто-нибудь указать мне учебник, Google просто молчит об этом? Или, может быть, короткий пример...

Кроме того, где я могу получить информацию об условном контроле? Скажем, если я хочу условно включить определенные части html на свою страницу, как мне это сделать с помощью heist? В общем, где "если"?

Спасибо


person r.sendecky    schedule 19.03.2012    source источник
comment
Пробовали ли вы getQueryParams для GET или getPostParams для POST из Snap.Core ? Я не использовал их, но они, кажется, делают то, что вы описываете.   -  person Paul R    schedule 19.03.2012


Ответы (1)


См. раздел Использование пищеварительных функторов с Heist. за хороший учебник по простым формам и размышления Mightybyte об ограблении. Если вы планируете использовать multipart/form-data, используйте модуль Snap.Util.FileUploads.

Вы можете использовать Splice для создания контента на основе условия.
Splice возвращает список Node,

mySplice = do
  -- get environment conditions
  -- condition could be passed in as a parameter 
  if condition 
     then return [] -- do nothing
     else return [TextNode "some content"] -- see Text.XmlHtml

Затем вы должны привязать этот сплайс к тегу, используя что-то вроде:

bindSplice myTag mysplice defaultHeistState

И поместите <myTag/> в свой шаблон. Когда Heist отображает шаблон, он оценит соединение, когда встретит тег, и вставит значение на его место.

person qubital    schedule 19.03.2012
comment
Спасибо за пример если. Я постараюсь это переварить. Кроме того, спасибо за ссылку на учебник, хотя она не объясняет, что мне нужно. Я не хочу создавать форму или делать что-то необычное. Я просто хочу написать форму, используя только HTML, и вставить ее в шаблон ограбления. Учитывая простой тег ‹INPUT› и отправку, какую функцию я использую в обработчике действий для получения данных формы? Что может быть проще? :) Спасибо. - person r.sendecky; 20.03.2012
comment
@r.sendecky В этом случае вы просто используете getParam или getPostParam, как указано выше Полом. - person qubital; 20.03.2012
comment
Спасибо. Это должно сработать. Меня смутила функция getParams, потому что я думал, что она используется для извлечения переменной URL. По-видимому, это делает и то, и другое. Я пока не понимаю, как это работает, но я проверю это. - person r.sendecky; 21.03.2012