2011-02-15 14 views
5

Estoy usando el rasgo LiftScreen y tengo una duda sobre el campo y los métodos de texto. El método de texto usa el método makeField y luego el SHtml.text para representar el campo, mientras que el método field usa un rasgo FormVendor para representar el html.Usando el campo o texto de LiftScreen

Entonces, ¿cuál es la mejor manera de agregar un campo? Tuve que usar el método de campo o los métodos de texto/contraseña/etc.

Gracias.

Respuesta

6

El método de campo es un poco de azúcar sintáctico para crear campos usando generadores de campo. Utiliza los valores predeterminados de ese generador para crear el campo.

El método makeField permite especificaciones exactas de su campo.

Como tal, no hay "Una mejor respuesta". Si está contento con los campos predeterminados creados por FormVendor, úselos. Si necesita un control más particular sobre sus campos, use makeField.

makeField toma efectivamente los argumentos que se le asignan y los usa para crear un campo personalizado. Por ejemplo, makeField("Password", "", SHtml.password(is, set _)) es efectivamente igual a

object MyScreen extends LiftScreen { 
    val password = new Field { 
    type ValueType = String 
    override def name = "Password" 
    override implicit def manifest = buildIt[String] 
    override def default = "" 
    override def toForm: Box[NodeSeq] = SHtml.password(is, set _) 
    } 
} 

(Tomado de Adding Custom Field Types to LiftScreen)

Esto sólo se aplica a una LiftScreen. Si necesita usar un campo personalizado en múltiples LiftScreen, cree un rasgo stand-along, el Lift Wiki indica "Puede configurar Tipo global → Proveedores de formulario en LiftRules.vendForm para el formulario de ámbito de aplicación vending". This page en particular tiene un código de ejemplo y más explicación.

+0

Gracias, gran explicación –

Cuestiones relacionadas