使用代码段提升(Scala)自定义表单

时间:2012-10-24 11:18:50

标签: scala authentication lift

Hello其他程序员, 你可能从我以前的问题中知道我在Scala / Lift世界中是一个绝对的新手,因此我可能会问一些微不足道的问题,对不起:)

我想制作一个自定义登录表单来验证用户(用户不通过数据库进行身份验证,而是通过Google协议缓冲区通过API调用),所以我需要做的就是获取输入并发送他们到API。

到目前为止,我想出了我的login.html页面:

<div id="loginContainer" class="loginMainContainer centerContainer">
      <div class="loginInputWrapper">
        <input type="text" name="loginName" id="loginName" class="txtLogin" />
      </div>
      <div class="loginInputWrapper">
        <input type="password" name="loginPassword" id="loginPassword" class="pwLogin" />
      </div>
      <div class="buttonWrapper loginButtonWrapper">
        <button type="submit" class="hiddenButton qsbfont">Login</button>
      </div>
    </div>

我希望抓取loginNameloginPassword字段值。实现这一目标的最佳方式是什么?

我尝试使用此类将其添加到snippet包中,但我无法弄清楚如何将这两者连接在一起。这是我的片段:

object MyAuthentication {
  def authentication(name: String, password: String) = {

    def validate(user: String, password: String): Boolean = {
      if(user == "tac" && password == "tac") true else false
    }

    def createUser(loggedIn: Boolean): Boolean = {
      if (loggedIn) {
        val user = new MyUser
        user.setName(name)
        user.setUID(1111)
        user.setLoginState(loggedIn)
        user.setLanguage("en_EN")
      }
      loggedIn
    }

    if (createUser(validate(name, password)))
      <span>loggedIn</span>
    else
      <span>failure!</span>

  }

  def render = SHtml.onSubmitList(credentials => {
    authentication(credentials(0), credentials(1))
  })

}

那么,有可能吗?我如何将这两件事连在一起?

2 个答案:

答案 0 :(得分:1)

不是一个完整的答案,但希望是一个指示从哪里开始:

结帐this Ajax Form demo。相关的scala源代码为here,模板源为here

这似乎与您尝试做的类似。他们将所有内容联系起来的方式是将{-1}}形式的字段包裹起来。然后在服务器端,<lift:snippet type="AjaxForm:show" form="post">方法接受模板xml(它们使用show作为参数类型,但我很确定你可以将它交换为Group)并绑定字段到启用Ajax的字段。

请注意演示源中的NodeSeq ...坦率地说,我不喜欢这样做的演示,因为它很难理解方法的来源,对于Lift的新手来说。 import SHtml._untrustedSelectselectsubmit等方法来自该导入。

作为最后一点,我发现Lift's Google Groups page对于提升相关问题比SO更有帮助。我不是电梯大师,但那里有人。祝你好运!

答案 1 :(得分:0)

这是指向如何制作表单http://simply.liftweb.net/index-4.1.html#toc-Section-4.1

的网页的链接

请注意虽然<div class="lift:LoginForm">code goes here</div>内部不应该有div标签,但我更喜欢这个,因为它允许更多的控制。