0

ドキュメントに従って独自のフィールドコンストラクターを作成しました。フィールドのhtmlは必要に応じてレンダリングされます。
今、私は自分のニーズに合わせて拡張したいと@helper.inputRadioGroup思います。

私の現在のテンプレートは次のようになります。

@(smsReviewForm: Form[SmsReview], grades: Seq[Grade]) 

@helper.inputRadioGroup(smsReviewForm("grade"),
            options = grades.map(g => g.value.toString -> g.name)
        )

結果は次のようになります。

<div class="clearfix ">
<label for="grade">grade</label>
  <span class="buttonset" id="grade">   
      <input type="radio" id="grade_1" name="grade" value="1">
      <label for="grade_1">Brilliant</label>    
      <input type="radio" id="grade_2" name="grade" value="2">
      <label for="grade_2">Good</label>    
      <input type="radio" id="grade_3" name="grade" value="3" checked="">
      <label for="grade_3">Ok</label>    
  </span>
<span class="help-inline">Numeric</span>
</div>

私が欲しいのは、@helper.customInputRadioGroupレンダリングするを作成することです:

<div class="clearfix ">
<label for="grade">grade</label>
  <span class="buttonset" id="grade">   
      <input type="radio" id="grade_1" name="grade" value="1" class="hover-star star_on">
      <input type="radio" id="grade_2" name="grade" value="2" class="hover-star star_on">
      <input type="radio" id="grade_3" name="grade" value="3" checked="" class="hover-star star_on">      
  </span>
<span class="help-inline">Numeric</span>
</div>  

独自のcustomInputRadioGroupをどこでどのように実装できますか?

4

1 に答える 1

1

Playソースコードで他のビューヘルパーがどのように実行されるかを確認できます

次のコードをviews.helperプロジェクトに組み込むと、必要なものが得られるはずです。

@(field: play.api.data.Field, options: Seq[(String,String)], args: (Symbol,Any)*)(implicit handler: FieldConstructor, lang: play.api.i18n.Lang)

@input(field, args:_*) { (id, name, value, htmlArgs) =>
  <span class="buttonset" id="@id">
    @options.map { v =>
      <input type="radio" id="@(id)_@v._1" name="@name" value="@v._1" @(if(value == Some(v._1)) "checked" else "") @toHtmlArgs(htmlArgs)>
    }
  </span>
}

余分なラベルを省くためだけにカスタムビューヘルパーを作成する必要があるのではないかと思います。ビットcssで同じ視覚効果を実現できるかもしれません。

于 2013-03-04T15:28:31.303 に答える