Я создал небольшое составное веб-приложение, которое может отображать несколько значений, полученных с другого веб-сайта, используя предоставленный URL-адрес. На данный момент этот URL-адрес жестко закодирован в одной из моих функций, и теперь я хотел бы добавить функцию для динамического создания URL-адреса на основе значений в текстовом поле и флажке.
Вот так выглядит моя страница:
(defn view-layout [& content]
(html [:body content]))
(defn view-input []
(view-layout
[:h2 "Find"]
[:form {:method "post" :action "/"}
( for [category ["Cat1" "Cat2" "Cat3"]]
[:input {:type "checkbox" :id category } category ] )
[:br]
[:input {:type "text" :id "a" :value "insert manga name"}] [:br]
[:input.action {:type "submit" :value "Find"}]
[:a {:href "/downloads"} "Downloads"]]))
(defn view-output []
(view-layout
[:h2 "default images"]
[:form {:method "post" :action "/"}
(for [name (get-content-from-url (create-url))]
[:label name [:br]]
)]))
(defn create-manga-url
[]
"http://www.mysite.net/search/?tfield=&check=000")
Вот маршруты:
(defroutes main-routes
(GET "/" []
(view-input))
(GET "/downloads" []
(view-downloads))
(POST "/" []
(view-output) ))
На данный момент мне нужна помощь с функцией (create-url)
(возвращает строку), где я хотел бы получить все поля, обязательные для моего поиска (одно текстовое поле и 3 флажка), и проанализировать их значения, которые будут переданы в ( конкатенированный) URL-адрес - для флажка, если флажок установлен, раздел флажка будет иметь значение 1 вместо 0 или останется 0, если нет (флажок = 100 или 010, 011, если были выбраны два флажка). В случае текстового поля tfield=userinputtext.
РЕДАКТИРОВАТЬ Я провел много времени в качестве разработчика .Net и Java, и эта часть compojure для меня полная загадка. Это то, чего я хотел бы добиться с помощью функции (create-url)
(псевдокод, написанный в стиле OO):
(defn create-url [*text_field cbox1 cbox2 cbox3*]
(def url "http://www.mysite.net/search/?")
(def tfield "tfield=")
(def cbox "&check=")
(if (checked? cbox1)
(str cbox "1")
(str cbox "0"))
(if (checked? cbox2)
(str cbox "1")
(str cbox "0"))
(if (checked? cbox3)
(str cbox "1")
(str cbox "0"))
(str tfield (:value text_field))
(str url tbox cbox))
Я прошу прощения за то, как выглядит этот псевдокод, но это та часть, которую я хотел бы узнать: как я могу получить данные из формы и проанализировать их (в этом случае я хотел бы прикрепить значения из полей формы в строку)
Кто-нибудь может мне с этим помочь?
create-url
с параметрами и ожидаемыми возвращаемыми значениями. - person ivant   schedule 27.05.2012