NAME
Mojolicious::Plugin::DomIdHelper - Mojolicious plugin to generate DOM IDs and CSS class names from your ORM objects
SYNOPSIS
# Mojolicious
$self->plugin('dom_id_helper');
# Or, your defaults
$self->plugin('dom_id_helper', delimiter => '-')
# Mojolicious::Lite
plugin 'dom_id_helper';
# Set defaults
plugin 'dom_id_helper', delimiter => '-'
# Your view
<div id="<%= dom_id($object) %>" class="<%= dom_class($object) %>">
...
</div>
<div id="<%= dom_id($object, method => 'name') ) %>">
...
</div>
DESCRIPTION
DOM IDs are generated by joining an object's package name and its primary key with the character specified by the "delimiter" option. By default the primary key is retrieved via a method named id
. This can be modified, see "OPTIONS".
By default, given an instance of DB::Package::User
with an ID of 1
:
dom_id($user)
dom_class($user)
will generate:
user_1
user
For dom_id
, if the primary key is undefined only the package name is returned. If $user
is not a reference undef
is returned.
Multi-column primary keys are not separated by the "delimiter" option, they are concatenated.
For references that aren't blessed dom_id
and dom_class
return the reference type. If Lingua::EN::Inflect is installed array references that contain a blessed reference will return the pluralized form of the blessed reference.
For example, if Lingua::EN::Inflect is installed:
dom_id([$user])
dom_class([$user])
dom_id([])
dom_id({ user => $user })
dom_id({})
will generate:
users
users
array
hash
hash
If Lingua::EN::Inflect is not installed dom_id([$user])
will return array
.
ORMs
The aim is to be ORM agnostic. Just set the "method" option to the name of the method used to retrieve your object's primary key.
Multi-column primary keys returned as array references will cause problems (for now).
OPTIONS
delimiter
plugin 'dom_id_helper', delimiter => '-'
The character used to delimit the object's package name from its primary key. Defaults to '_'
.
method
plugin 'dom_id_helper', method => 'name'
plugin 'dom_id_helper', method => [qw{first_name last_name}]
The method used to retrieve the object's primary key. Defaults to 'id'
.
keep_namespace
plugin 'dom_id_helper', keep_namespace => 1
Keep the full package name when generating the DOM ID. Defaults to 0
(false).
AUTHOR
Skye Shaw <sshaw AT lucas.cis.temple.edu>
SEE ALSO
Mojolicious and Mojolicious::Plugin::TagHelpers
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.