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.
base_tag
Generate portable base
tag refering to the current base URL.
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" />
|
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 => ( method => 'POST' ) => begin
%= text_field 'first_name'
%= submit_button
% end
%= form_for login => { foo => 'bar' } => ( 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" method= "POST" >
<input name= "first_name" />
<input value= "Ok" type= "submit" />
</form>
<form action= "/path/to/login/bar" 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 index => { foo => 'bar' } => ( class => 'links' ) => begin
Home
% end
<%= 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/bar" >Home</a>
<a href= "/path/to/index" >Home</a>
<a href= "/path/to/file" >File</a>
|
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" />
|
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.
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" />
|
text_area
%= text_area 'foo'
%= text_area foo => 'Default!' , cols => 40
%= text_area foo => 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" >Default!</textarea>
<textarea name= "foo" >
Default!
</textarea>
|
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.