0

私はscalaとliftを使い始めたばかりで、フォームフィールドをMegaProtoUserからウィザード画面に組み込むことに関して少し行き詰まっています。

次の MegaProtoUser コードがあります。

object User extends User 
  with MongoMetaRecord[User]
  with MetaMegaProtoUser[User] {
    override def skipEmailValidation = true
  }

class User private () extends MongoRecord[User]
  with MegaProtoUser[User] {
    def meta = User

     //protected methods ...

}

ウィザードのセットアップは次のようになります。

object SignupWizard extends Wizard {
  object completeInfo extends WizardVar(false)

  val person = new Screen {

    //Incoroporate MegaProtoUser fields here ...

    override def nextScreen = {
       business
    }
  }

  val business = new Screen {
    val business = field("Business name","")
  }

  def finish() {
    S.notice("Thank you for registering!")
    completeInfo.set(true)
  }

}

MegaProtoUser クラスから一部の (すべてではない) 選択したフィールドを人物画面に組み込みたいのですが、両方で利用可能なメソッドでこれを行う方法は今はわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

1

AbstractScreenaddFieldsメソッドは、個々のフィールドを追加するだけでなく、Recordオブジェクトからすべてのフィールドを追加することもできます。これはLiftScreenWizardScreen両方で機能します。

// assuming you just want to create a new user
object user extends WizardVar(User.createRecord)

val person = new Screen {
  // addFields(() => user.is) would add all fields
  addFields(() => user.is.email)
  addFields(() => user.is.password)
  addFields(() => user.is.timezone)

  override def nextScreen = {
     business
  }
}
于 2012-06-13T13:28:12.790 に答える