Mojolicousのテンプレートでクラス指定してみる
今回はテンプレートに書いた要素のレイアウトをCSSで制御したいときなどに便利なクラス指定やID指定をしてみます。
テンプレート内にHTMLとして以下のように書いても良いのですが
@@ index.html.ep <form method='GET' action=<%= url_to('index') %> id='name_form'> Name: <input type="text" name='name' class="name" /><br/> <input type="submit" value="post" /> </form>
以下のようにも書くことができます。
@@ index.html.ep <%= form_for 'index' => (method => 'GET', id => 'name_form') => begin %> Name:<%= text_field 'name' => (class => 'name') %><br/> <%= submit_button 'post' %> <% end %>
"templates/*.html.ep"内や__DATA__内にCSSを書くことで制御可能です。
以下サンプル。
use strict; use warnings; use Mojolicious::Lite; get '/' => sub { my $self = shift; my $name = $self->param('name') || ''; $self->render( name => $name ); } => 'index'; app->start; __DATA__ @@ layouts/default.html.ep <html> <head> <meta http-equiv='Content-Type' content='text/html;charset=UTF-8'/> <title>Mojo class sample</title> <style type='text/css' media='screen'> #wrapper { position: absolute; width: 600px; left: 50%; margin-left: -300px; background-color: #3cc; } .name { width: 500px; text-align: center; } </style> </head> <body> <div id='wrapper'> <%= content %> </div> </body> </html> @@ index.html.ep % layout 'default'; <%= form_for 'index' => (method => 'GET', id => 'name_form') => begin %> Name: <%= text_field 'name' => (class => 'name') %><br/> <%= submit_button 'post' => (id => 'post_name') %> <% end %> <% if( $name ) { %> Hello, <%= $name %>!<br/> <% } %>