LoginSignup
13
17

More than 5 years have passed since last update.

PlayFrameworkでBootstrapを使うときに便利なplay-bootstrap

Last updated at Posted at 2016-03-30

play-bootstrapとは

playframeworkでテンプレートヘルパーのようにBootstrapをレンダリングできるライブラリ
公式ドキュメントが充実している
http://adrianhurt.github.io/play-bootstrap/

事前準備

build.sbt

  • libraryDependenciesに以下を追加

PlayとBootstrapのバージョンによって使うものが違う
ここではPlay2.5とBootstrap4用のplay-bootstrapを追加している

libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs,
"com.adrianhurt" %% "play-bootstrap" % "1.0-P25-B4-SNAPSHOT"
)

  • resolverを追加

libraryDependenciesの下にでも以下を追記

resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/"

好きな手段でBootstrapを読み込む

CDN、Webjar、Bower、直接、etc
今回は公式を参考にしてヘッダーにCDNを記述した
http://v4-alpha.getbootstrap.com/getting-started/introduction/

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" integrity="sha384-y3tfxAZXuh4HwSYylfB+J125MxIs6mR5FOHamPBG064zB+AFeWH94NdvaCBm8qnd" crossorigin="anonymous">

使い方

  • Viewに使いたいフィールドコンストラクタをインポート

・Vertical forms
・Horizontal forms
・Inline forms
・Clear field constructor
の4つがある
とりあえずVertical formを指定してみる

@import b4.vertical.fieldConstructor

  • フォーム部分

公式のサンプルをコピペしてちょっと変更
playのヘルパーにはsubmitやresetがないが、
play-bootstrapにはこれが用意されているのが素晴らしい

@b4.form(routes.HomeController.login) {
  @b4.email( form("email"), '_label -> "Email", 'placeholder -> "example@mail.com" )
  @b4.password( form("password"), '_label -> "Password", 'placeholder -> "Password" )
  @b4.checkbox( form("remember"), '_text -> "Remember me", 'value -> true )
  @b4.submit('class -> "btn btn-primary"){ Sign in }
}
  • 表示

playbootstrap.png

余談

PlayでBootstrapを使いたいときはよくあるが、
ディフォルトのテンプレートヘルパーでレンダリングされるHTMLはBootstrapに則してくれない
先人たちの対処を見てみると、Bootstrapに則すように独自のヘルパーを作って、
それをimplicitFieldConstructorして……とやってごり押し気味に解決している
何とかならないのかと思って良さそうなのを探したら、あった

13
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
17