【问题标题】:Lift (Scala) Custom Form with SnippetLift (Scala) 带有代码段的自定义表单
【发布时间】:2013-01-04 16:24:32
【问题描述】:

各位程序员,大家好, 正如你可能从我之前的问题中知道的那样,我是 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 包中,但我不知道如何将这两者连接在一起。这是我的 sn-p:

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))
  })

}

那么,有可能吗?如何将这两个东西连接在一起?

【问题讨论】:

    标签: scala authentication lift


    【解决方案1】:

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

    查看this Ajax Form demo。相关的scala源是here,模板源是here

    这似乎与您尝试做的类似。他们将所有内容联系起来的方式是将“what-would-be-the-form”的字段包装在&lt;lift:snippet type="AjaxForm:show" form="post"&gt; 中。然后在服务器端,show 方法采用模板 xml(他们使用 Group 作为参数类型,但我很确定您可以将其交换为 NodeSeq)并将字段绑定到启用 Ajax 的字段.

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

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

    【讨论】:

    • 非常感谢 - 我会尝试并在这里重新发布我的结果;)
    【解决方案2】:

    这是一个关于如何制作表格的页面的链接http://simply.liftweb.net/index-4.1.html#toc-Section-4.1

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

    【讨论】:

      猜你喜欢
      • 2012-02-21
      • 1970-01-01
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      相关资源
      最近更新 更多