2012-06-26 15 views
9

Sono un neofita del framework di gioco e voglio scrivere il mio costruttore di campi di bootstrap su Twitter, che include l'uso del bootstrap icon-classes. Per rendere questa dinamica ho bisogno di passare la classe delle icone tramite un parametro extra. È possibile? Ho provato quanto segue e alcune altre variazioni:Play 2.0.1 costruttore di campo personalizzato ... Parametri extra?

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 questi parametri il compilatore genera questo errore:

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

Come posso passare altri argomenti se questo non funziona?

risposta

10

Stai passando il parametro nel modo giusto. Ma i parametri aggiuntivi sono memorizzati in @elements.args. Quindi devi usare @elements.args.get('_iconcls) per leggere il tuo parametro.

+0

L'ha fatto. Grazie! – Demnogonis

Problemi correlati