簡體   English   中英

Play 2.0 Framework - 自定義表單字段

[英]Play 2.0 Framework - Custom Form Field

提前感謝您的時間和幫助!

我正在嘗試在Play 2.0.4中構建一個自定義表單字段,該字段使用此處的twitter bootstrap datepicker。

基本上,我正在嘗試創建一個自定義字段構造函數,輸出:

<div class="input-append date error" id="expires_field" data-date="" data-date-format="mm/dd/yyyy">
    <label for="expires_field">Expiration Date</label>
    <div class="input">
        <input class="span2" size="16" type="text" name="expires" id="expires" value="mm/dd/yyyy">
        <span class="add-on"><i class="icon-th"></i></span>
        <span class="help-inline"></span>
    </div>
</div>

但是,盡管在互聯網上大量瀏覽 - 我一直無法在Play 2.0中創建自定義表單字段,我仍然可以驗證並顯示錯誤。

我認為,大多數情況下,我對應用程序結構中文件的位置感到有些困惑。

任何幫助將不勝感激!

Pixelworlds

我一直在努力解決這個問題,這就是我想出的:

@(field: play.api.data.Field, args: (Symbol,Any)*)(implicit lang: play.api.i18n.Lang)

@import play.api.i18n._
@import views.html.helper._

@elements = @{ new FieldElements(field.id, field, null, args.toMap, lang) }

<div class="control-group">
  <label class="control-label" for="@field.name">@elements.args.get('_label)</label>
  <div class="controls">
    <div class="input-append date" id="@field.id-picker" data-date="@field.value" data-date-format="@elements.args.get('format).getOrElse("mm/dd/yyyy")">
      <input type="text" name="@field.name" id="@field.id">
      <span class="add-on"><i class="icon-calendar"></i></span>
      <span class="help-inline">@elements.errors(elements.lang).mkString(", ")</span>
      <span class="help-block">@elements.infos(elements.lang).mkString(", ")</span> 
    </div>
  </div>
</div>

將其保存在calendar.scala.html文件中並使用它:

@views.html.forms.calendar(
  myform("end"),
  '_showConstraints -> false,
  '_label -> Messages("label.end.date"),
  'format -> "dd/mm/yyyy"
)

然后在你的JS中:

$('#end-picker').datepicker({
  weekStart: 1
}).on('changeDate', function(ev){
  $('#end-picker').datepicker('hide');
});

使用field.name +“ - patch”生成id的名稱

此外,您可以使用inputText:

@inputText(
  myform("start"),
  '_showConstraints -> false,
  '_label -> Messages("label.start.date"),
  'class -> "date-picker",
  Symbol("data-date-format") -> "mm/dd/yyyy"
)

希望能幫助到你

我解決這個問題的最簡單方法是在我的bean級別定義一個注釋(play.data.format.Formats):

@Formats.DateTime(pattern =“mm / dd / yyyy”)public Date start;

該框架比關注HTML中的渲染。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM