2012-06-26 7 views
9

Ich bin neu im Play Framework und möchte meinen eigenen Twitter Bootstrap Feldkonstruktor schreiben, der die Verwendung des Bootstraps icon-classes beinhaltet. Um diese Dynamik zu erzeugen, muss ich die Icon-Klasse über extra Parameter übergeben. Ist das überhaupt möglich? Ich habe versucht, die folgende und einige andere Varianten:Play 2.0.1 benutzerdefinierter Feldkonstruktor ... Zusätzliche Parameter?

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> 

diese Parameter mit den Compiler diesen Fehler führen:

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

Wie kann ich andere Argumente übergeben, wenn das nicht funktioniert?

Antwort

10

Sie übergeben den Parameter auf die richtige Weise. Aber die zusätzlichen Parameter sind in @elements.args gespeichert. Also müssen Sie @elements.args.get('_iconcls) verwenden, um Ihren Parameter zu lesen.

+0

Das hat es getan. Vielen Dank! – Demnogonis

Verwandte Themen