2012-06-26 13 views
9

Soy nuevo en el marco de juego y quiero escribir mi propio constructor de campo de bootstrap de twitter, que incluye el uso del bootstrap icon-classes. Para hacer esto dinámico, necesito pasar la clase de icono a través de un parámetro adicional. ¿Es eso posible? He intentado lo siguiente y algunas otras variaciones:Play 2.0.1 constructor de campo personalizado ... ¿Parámetros adicionales?

index.scala.html

@(loginForm: Form[Login]) 

@import helper._ 
@implicitFieldConstructor = @{ FieldConstructor(twitterBootstrapInput.render) } 
@main("Akquise") { 

<div class="container row"> 
    <div class="span4 offset5"> 
     @form(routes.Application.login(), args = 'class -> "well"){ 
      <h3>Anmeldung</h3> 
      <fieldset> 
      @inputText(loginForm("username"), '_label -> "Nutzername", '_iconcls -> "icon-user") 
      @inputPassword(loginForm("password"), '_label -> "Passwort", '_iconcls -> "icon-key") 
      </fieldset> 

      <button type="submit" class="btn btn-primary">Login</button>    
     } 
    </div> 
</div> 

} 

twitterBootstrapInput.scala.html

@(elements: helper.FieldElements) 

@************************************************** 
* Generate input according twitter bootsrap rules * 
**************************************************@ 
<label for="@elements.id">@elements.label</label> 
<div class="input-prepend"> 
    <span class="add-on" style="margin-right:-5px;"> 
     <i class="@elements.iconcls icon-size"></i> 
    </span> 
    @elements.input 
</div> 

Con estos parámetros, el compilador lanza este error:

value iconcls is not a member of views.html.helper.FieldElements

¿Cómo puedo pasar otros argumentos si eso no funciona?

Respuesta

10

Está pasando el parámetro de la manera correcta. Pero los parámetros adicionales se almacenan en @elements.args. Entonces debe usar @elements.args.get('_iconcls) para leer su parámetro.

+0

Eso lo hizo. ¡Gracias! – Demnogonis

Cuestiones relacionadas