2013-03-04 2 views
0

Я создал свой собственный конструктор полей, следуя docs, html для моих полей отображаются в соответствии с моими потребностями.
Теперь я хочу расширить @helper.inputRadioGroup, чтобы соответствовать моим потребностям.расширение вспомогательного вводаRadioGroup play2

Мой текущий шаблон выглядит следующим образом:

@(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?

ответ

1

Вы можете увидеть, как другие Помощники сделаны в play sourcecode

Если вы поместите следующий код в 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)[email protected]_1" name="@name" value="@v._1" @(if(value == Some(v._1)) "checked" else "") @toHtmlArgs(htmlArgs)> 
    } 
    </span> 
} 

Интересно ли это действительно необходимо создать пользовательский помощник вида, чтобы оставить лишние ярлыки, возможно, вы можете достичь такого же визуального эффекта с помощью бит css.

+0

В этом случае вы правы. Реализация пользовательского помощника немного переборщила, но моя главная цель этого вопроса заключается в том, как следует реализовать пользовательский помощник. Я не мог этого найти. Так что это было прекрасно! Спасибо! – jakob

 Смежные вопросы

  • Нет связанных вопросов^_^