NAME
Mojolicious::Plugin::TagHelpers - Tag helpers plugin
SYNOPSIS
$self ->plugin( 'TagHelpers' );
plugin 'TagHelpers' ;
|
DESCRIPTION
Mojolicious::Plugin::TagHelpers is a collection of HTML tag helpers for Mojolicious.
Most form helpers can automatically pick up previous input values and will show them as default. You can also use "param" in Mojolicious::Plugin::DefaultHelpers to set them manually and let necessary attributes always be generated automatically.
% param country => 'germany' unless param 'country' ;
<%= radio_button country => 'germany' %> Germany
<%= radio_button country => 'france' %> France
<%= radio_button country => 'uk' %> UK
|
This is a core plugin, that means it is always enabled and its code a good example for learning how to build new plugins, you're welcome to fork it.
HELPERS
Mojolicious::Plugin::TagHelpers implements the following helpers.
check_box
%= check_box employed => 1
%= check_box employed => 1, id => 'foo'
|
Generate checkbox input element. Previous input values will automatically get picked up and shown as default.
<input name= "employed" type= "checkbox" value= "1" />
<input id= "foo" name= "employed" type= "checkbox" value= "1" />
|
color_field
%= color_field 'background'
%= color_field background => '#ffffff'
%= color_field background => '#ffffff' , id => 'foo'
|
Generate color input element. Previous input values will automatically get picked up and shown as default.
<input name= "background" type= "color" />
<input name= "background" type= "color" value= "#ffffff" />
<input id= "foo" name= "background" type= "color" value= "#ffffff" />
|
date_field
%= date_field 'end'
%= date_field end => '2012-12-21'
%= date_field end => '2012-12-21' , id => 'foo'
|
Generate date input element. Previous input values will automatically get picked up and shown as default.
<input name= "end" type= "date" />
<input name= "end" type= "date" value= "2012-12-21" />
<input id= "foo" name= "end" type= "date" value= "2012-12-21" />
|
datetime_field
%= datetime_field 'end'
%= datetime_field end => '2012-12-21T23:59:59Z'
%= datetime_field end => '2012-12-21T23:59:59Z' , id => 'foo'
|
Generate datetime input element. Previous input values will automatically get picked up and shown as default.
<input name= "end" type= "datetime" />
<input name= "end" type= "datetime" value= "2012-12-21T23:59:59Z" />
<input id= "foo" name= "end" type= "datetime" value= "2012-12-21T23:59:59Z" />
|
email_field
%= email_field 'notify'
%= email_field notify => 'nospam@example.com'
%= email_field notify => 'nospam@example.com' , id => 'foo'
|
Generate email input element. Previous input values will automatically get picked up and shown as default.
<input name= "notify" type= "email" />
<input name= "notify" type= "email" value= "nospam@example.com" />
<input id= "foo" name= "notify" type= "email" value= "nospam@example.com" />
|
file_field
%= file_field 'avatar'
%= file_field 'avatar' , id => 'foo'
|
Generate file input element.
<input name= "avatar" type= "file" />
<input id= "foo" name= "avatar" type= "file" />
|
%= form_for login => begin
%= text_field 'first_name'
%= submit_button
% end
%= form_for login => { format => 'txt' } => ( method => 'POST' ) => begin
%= text_field 'first_name'
%= submit_button
% end
%= form_for '/login' => ( method => 'POST' ) => begin
%= text_field 'first_name'
%= submit_button
% end
%= text_field 'first_name'
%= submit_button
% end
|
Generate portable form for route, path or URL. For routes that allow POST but not GET, a method
attribute will be automatically added.
<form action= "/path/to/login" >
<input name= "first_name" />
<input value= "Ok" type= "submit" />
</form>
<form action= "/path/to/login.txt" method= "POST" >
<input name= "first_name" />
<input value= "Ok" type= "submit" />
</form>
<form action= "/login" method= "POST" >
<input name= "first_name" />
<input value= "Ok" type= "submit" />
</form>
<input name= "first_name" />
<input value= "Ok" type= "submit" />
</form>
|
hidden_field
%= hidden_field foo => 'bar'
%= hidden_field foo => 'bar' , id => 'bar'
|
Generate hidden input element.
<input name= "foo" type= "hidden" value= "bar" />
<input id= "bar" name= "foo" type= "hidden" value= "bar" />
|
image
%= image '/images/foo.png'
%= image '/images/foo.png' , alt => 'Foo'
|
Generate image tag.
<img src= "/images/foo.png" />
<img alt= "Foo" src= "/images/foo.png" />
|
%= input_tag 'first_name'
%= input_tag first_name => 'Default name'
%= input_tag 'employed' , type => 'checkbox'
|
Generate form input element. Previous input values will automatically get picked up and shown as default.
<input name= "first_name" />
<input name= "first_name" value= "Default name" />
<input name= "employed" type= "checkbox" />
|
javascript
%= javascript '/script.js'
%= javascript begin
var a = 'b' ;
% end
|
Generate portable script tag for Javascript
asset.
<script src= "/script.js" />
<script><![CDATA[
var a = 'b' ;
]]></script>
|
link_to
%= link_to Home => 'index'
%= link_to Home => 'index' => { format => 'txt' } => ( class => 'links' )
%= link_to index => { format => 'txt' } => ( class => 'links' ) => begin
Home
% end
%= link_to Contact => 'mailto:sri@example.com'
<%= link_to index => begin %>Home<% end %>
<%= link_to '/path/to/file' => begin %>File<% end %>
<%= link_to url_for->query( foo => 'bar' )-> to_abs => begin %>Retry<% end %>
|
Generate portable link to route, path or URL, defaults to using the capitalized link target as content.
<a href= "/path/to/index" >Home</a>
<a class= "links" href= "/path/to/index.txt" >Home</a>
<a class= "links" href= "/path/to/index.txt" >
Home
</a>
<a href= "mailto:sri@example.com" >Contact</a>
<a href= "/path/to/index" >Home</a>
<a href= "/path/to/file" >File</a>
|
month_field
%= month_field 'vacation'
%= month_field vacation => '2012-12'
%= month_field vacation => '2012-12' , id => 'foo'
|
Generate month input element. Previous input values will automatically get picked up and shown as default.
<input name= "vacation" type= "month" />
<input name= "vacation" type= "month" value= "2012-12" />
<input id= "foo" name= "vacation" type= "month" value= "2012-12" />
|
number_field
%= number_field 'age'
%= number_field age => 25
%= number_field age => 25, id => 'foo' , min => 0, max => 200
|
Generate number input element. Previous input values will automatically get picked up and shown as default.
<input name= "age" type= "number" />
<input name= "age" type= "number" value= "25" />
<input id= "foo" max= "200" min= "0" name= "age" type= "number" value= "25" />
|
password_field
%= password_field 'pass'
%= password_field 'pass' , id => 'foo'
|
Generate password input element.
<input name= "pass" type= "password" />
<input id= "foo" name= "pass" type= "password" />
|
%= radio_button country => 'germany'
%= radio_button country => 'germany' , id => 'foo'
|
Generate radio input element. Previous input values will automatically get picked up and shown as default.
<input name= "country" type= "radio" value= "germany" />
<input id= "foo" name= "country" type= "radio" value= "germany" />
|
range_field
%= range_field 'age'
%= range_field age => 25
%= range_field age => 25, id => 'foo' , min => 0, max => 200
|
Generate range input element. Previous input values will automatically get picked up and shown as default.
<input name= "age" type= "range" />
<input name= "age" type= "range" value= "25" />
<input id= "foo" max= "200" min= "200" name= "age" type= "range" value= "25" />
|
search_field
%= search_field 'q'
%= search_field q => 'perl'
%= search_field q => 'perl' , id => 'foo'
|
Generate search input element. Previous input values will automatically get picked up and shown as default.
<input name= "q" type= "search" />
<input name= "q" type= "search" value= "perl" />
<input id= "foo" name= "q" type= "search" value= "perl" />
|
select_field
%= select_field language => [ qw(de en) ]
%= select_field language => [ qw(de en) ], id => 'lang'
%= select_field country => [[ Germany => 'de' ], 'en' ]
%= select_field country => [{ Europe => [[ Germany => 'de' ], 'en' ]}]
%= select_field country => [[ Germany => 'de' , class => 'europe' ], 'en' ]
|
Generate select, option and optgroup elements. Previous input values will automatically get picked up and shown as default.
< select name= "language" >
<option value= "de" >de</option>
<option value= "en" >en</option>
</ select >
< select id= "lang" name= "language" >
<option value= "de" >de</option>
<option value= "en" >en</option>
</ select >
< select name= "country" >
<option value= "de" >Germany</option>
<option value= "en" >en</option>
</ select >
< select id= "lang" name= "language" >
<optgroup label= "Europe" >
<option value= "de" >Germany</option>
<option value= "en" >en</option>
</optgroup>
</ select >
< select name= "country" >
<option class= "europe" value= "de" >Germany</option>
<option value= "en" >en</option>
</ select >
|
stylesheet
%= stylesheet '/foo.css'
%= stylesheet begin
body {color:
% end
|
Generate portable style or link tag for CSS
asset.
< link href= "/foo.css" media= "screen" rel= "stylesheet" />
<style><![CDATA[
body {color:
]]></style>
|
%= submit_button
%= submit_button 'Ok!' , id => 'foo'
|
Generate submit input element.
<input type= "submit" value= "Ok" />
<input id= "foo" type= "submit" value= "Ok!" />
|
t
%=t div => 'some & content'
|
Alias for tag
.
<div>some & ; content</div>
|
tag
%= tag 'div'
%= tag 'div' , id => 'foo'
%= tag div => 'some & content'
<%= tag div => begin %>some & content<% end %>
|
HTML tag generator.
<div />
<div id= "foo" />
<div>some & ; content</div>
<div>some & content</div>
|
Very useful for reuse in more specific tag helpers.
$self ->tag( 'div' );
$self ->tag( 'div' , id => 'foo' );
$self ->tag( div => sub { 'Content' });
|
Results are automatically wrapped in Mojo::ByteStream objects to prevent accidental double escaping.
tel_field
%= tel_field 'work'
%= tel_field work => '123456789'
%= tel_field work => '123456789' , id => 'foo'
|
Generate tel input element. Previous input values will automatically get picked up and shown as default.
<input name= "work" type= "tel" />
<input name= "work" type= "tel" value= "123456789" />
<input id= "foo" name= "work" type= "tel" value= "123456789" />
|
text_area
%= text_area 'foo'
%= text_area 'foo' , cols => 40
%= text_area foo => 'Default!' , cols => 40
%= text_area foo => ( cols => 40) => begin
Default!
% end
|
Generate textarea element. Previous input values will automatically get picked up and shown as default.
<textarea name= "foo" ></textarea>
<textarea cols= "40" name= "foo" ></textarea>
<textarea cols= "40" name= "foo" >Default!</textarea>
<textarea cols= "40" name= "foo" >
Default!
</textarea>
|
text_field
%= text_field 'first_name'
%= text_field first_name => 'Default name'
%= text_field first_name => 'Default name' , class => 'user'
|
Generate text input element. Previous input values will automatically get picked up and shown as default.
<input name= "first_name" type= "text" />
<input name= "first_name" type= "text" value= "Default name" />
<input class= "user" name= "first_name" type= "text" value= "Default name" />
|
time_field
%= time_field 'start'
%= time_field start => '23:59:59'
%= time_field start => '23:59:59' , id => 'foo'
|
Generate time input element. Previous input values will automatically get picked up and shown as default.
<input name= "start" type= "time" />
<input name= "start" type= "time" value= "23:59:59" />
<input id= "foo" name= "start" type= "time" value= "23:59:59" />
|
url_field
Generate url input element. Previous input values will automatically get picked up and shown as default.
<input name= "address" type= "url" />
|
week_field
%= week_field 'vacation'
%= week_field vacation => '2012-W17'
%= week_field vacation => '2012-W17' , id => 'foo'
|
Generate week input element. Previous input values will automatically get picked up and shown as default.
<input name= "vacation" type= "week" />
<input name= "vacation" type= "week" value= "2012-W17" />
<input id= "foo" name= "vacation" type= "week" value= "2012-W17" />
|
METHODS
Mojolicious::Plugin::TagHelpers inherits all methods from Mojolicious::Plugin and implements the following new ones.
register
$plugin ->register(Mojolicious->new);
|
Register helpers in Mojolicious application.
SEE ALSO
Mojolicious, Mojolicious::Guides, http://mojolicio.us.